Есть переменная PHP: $x = " '1' => 'moloko' , '2' => 'ne moloko'"; Как сделать массив с данными из этой переменной? $y = array($x) <- плохо Какие еще есть варианты кроме как разобрать строку и формировать? Спасибо.
Покажи что в переменной $x, работающий PHP код, а не псевдокод. --- Добавлено --- Документация по массивам в PHP https://secure.php.net/manual/ru/language.types.array.php
Как это сделать? --- Добавлено --- Документацию я читал. Хорошо, перефразирую . как из переменной достать параметры в массив. С моего примера: PHP: $y = array('1' => 'moloko', '2' => 'nemoloko');
Вот у тебя есть $y с массивом, какие ты данные хочешь достать и какой результат получить? foreach поможет перебрать массив, там ключи (1,2) можно получить и значение (moloko,nemoloko)
Документацию я читал. Хорошо, перефразирую . как из переменной достать параметры в массив. С моего примера: PHP: $y = array("1" => 'moloko') --- Добавлено --- Мы не понимаем друг друга) PHP: $q = 'SELECT * FROM databasename'; mysqli_query($link,$q); // $q = " '1' => 'moloko' , '2' => 'ne moloko'"; // Вот переменную `q` подставить на подобии запроса) и составить массив. Ну типо; $x = array($q); // Ну вот так. Хотя мне уже это не надо ибо я пытался найти ответы для своего старого вопроса. Тут все отвечают только на тривиальные вопросы к сожалению) https://php.ru/forum/threads/dobavlenie-v-massiv-v-glubinu.59365/#post-478918
PHP: <?php $x = " '1' => 'moloko' , '2' => 'ne moloko'"; function getA($s) { eval('$r = array('.$s.');'); return $r; } $a = getA($x); print_R($a); http://sandbox.onlinephpfunctions.com/code/8f6fdc8f99bcdf049acd825ef878191004cc3035 --- Добавлено --- если строка там с варэкспорта к примеру
@deadlolman ты можешь просто написать код который покажет какие есть данные и какой результат? Если я запущу твой, то думаю он не покажет результата.
@deadlolman ты путаешь массив и строку. То, что ты написал, это строка. Так с массивами не работают. --- Добавлено --- Если ты хочешь превратить массив в строку, то пользуйся сериализацией. Но в БД не пихают сериализованные данные, ибо тогда не будет смысла в БД - она не умеет с ними работать так, как хочется, ведь это просто строки.
Иногда пихают, если нет необходимости искать внутри. Например, опции wordpress в таком виде часто хранятся. Поиск по значению внутри опции обычно не нужен, только по имени. А ещё MariaDB и последняя версия MySQL умеют с json-полями работать, вот это реально крутотень
1. PHP: $x=" '1' => 'moloko' , '2' => 'ne moloko'"; $y = array($x) это и есть $y = array('1' => 'moloko' , '2' => 'ne moloko'); 2. PHP: $y = array('1' => 'moloko', '2' => 'nemoloko'); $y[1] - это moloko $y[2] - это nemoloko 3. PHP: $q = 'SELECT * FROM databasename'; mysqli_query($link,$q); $arr = Array(); while($a = mysqli_fetch_array($q)) { if(){// задаешь условие если нужна выборка $arr[] = $a; // создаеш массив если нужны строки } } далее выполняешь все необходимые процедуры если хочешь работать с полученным массивом массивов также может быть больше при желании.
Тихо, тихо, рано ещё, он же ребёнок. --- Добавлено --- я думаю он имеет в виду то, что ТС думает, что вот надо через строку, а по факту надо вот писать вот так, как мы все пишем. Подозреваю, что ТС просто невкурил какой-то пример и случайно решил, что там кавычки нужны.
@deadlolman если тебе нужно из строки собрать массив используй функцию PHP: explode(); пример : PHP: $arr = []; $x = " '1' => 'moloko' , '2' => 'ne moloko' , '3' => 'ne moloko' , '4' => 'ne moloko'"; $d = explode(',', $x); foreach($d as $key => $value) { $dd = explode('=>', $value); $arr[$dd[0]] = $dd[1]; } print_r($arr);
Ребят, всем спасибо. Особенно Schrodinger, pinokio. За то что поняли мой вопрос. Как видите с постановкой проблемы дела у меня плохи) Спасибо.