2010-04-19 3 views
0

В настоящее время я выполняю запрос, который проходит через записи и формирует массив. print_r по запросу дает мне этоРабота с массивами

print_r($query) yields the following: 

Array (
[0] => ([field1] => COMPLETE [field2] => UNKNOWN [field3] => Test comment) 
[1] => ([field1] => COMPLETE [field2] => UNKNOWN [field3] => comment here) 
[2] => ([field1] => COMPLETE [field2] => UNKNOWN [field3] => checking) 
[3] => ([field1] => COMPLETE [field2] => UNKNOWN [field3] => testing) 
[4] => ([field1] => COMPLETE [field2] => UNKNOWN [field3] => working) 
) 

как-то я хочу, чтобы принять этот массив и преобразовать его обратно в PHP. Так, например, некоторые вещи, как этот

$myArray = array(...) 

затем $ туАггау должны дают samething как в print_r ($ запроса) yeilds. Благодаря

ответ

-1
$filedata = serialize($query); 
// write $filedata to a file 

Затем в другом файле:

// some other php file 
// read in the filedata 
$filedata = file_get_contents("file.dat"); 
$query = unserialize($filedata); 

Это то, что я предполагаю, что вы имели в виду преобразование строковое представление массива в PHP. Если вы хотите фактически преобразовать вывод print_r, вам нужно будет сделать какое-то серьезное регулярное выражение.

+0

да мне нужно, чтобы преобразовать print_r вывод в массив – Autolycus

+0

я могу сделать это $ RAWDATA = Array ('статус' => 'COMPLETE', 'исход' => 'UNKNOWN', 'место' => «Тест «); $ serialized = serialize ($ rawData); $ myNewArray = unserialize ($ serialized); print_r ($ myNewArray); \t , но это дает мне только один массив, как этот Array ([состояние] => [COMPLETE исход] => UNKNOWN [место] => RIGHT) как получить 0, 1, 2, ... спасибо – Autolycus

+0

нормально это работает, однако я не уверен, как добавить stdClass Object $ rawData = Array (array ('status' => 'COMPLETE', 'result' => 'UNKNOWN', 'location' => 'RIGHT') , \t \t \t \t \t \t массив ('статус' => 'NOTCOMPLETE', 'результат' => 'Известный', 'местоположение' => 'Тест')); $ serialized = serialize ($ rawData); $ myNewArray = unserialize ($ serialized); print_r ($ myNewArray); \t yeilds: Array ([0] => Array ([status] => COMPLETE [result] => UNKNOWN [location] => RIGHT) [1] => Array ([status] => NOTCOMPLETE [result] = > Известно [location] => Test)) его повторяющийся массив вместо объекта stdClass – Autolycus

1

Альтернативой serialize, что ближе к print_r выход будет

  • var_export - выходы или возвращает интерпретируемое строковое представление переменной

var_export() получает структурированную информацию о заданной переменной. Он похож на var_dump() с одним исключением: возвращаемое представление является допустимым кодом PHP.

Обратите внимание, что

var_export() не обрабатывает циклические ссылки, как это было бы почти невозможно сгенерировать оформленной PHP код для этого. Если вы хотите что-то сделать с полным представлением массива или объекта, используйте serialize().

Использование var_export не позволит вам проанализировать фактический результат print_r. Но tbh, я считаю, что это не совсем возможно. Если вам нужно это сделать, что-то не так с кодом.

0

я, возможно, недооцениваете свой опыт PHP здесь, но ....

Вы понимаете, что $ запрос является массивом, верно? Вы можете просто сделать $myArray = $query без использования print_r() для чего угодно.

Вам нужно его преобразовать в текст и обратно? Нужно ли это где-то хранить? Если да, можете ли вы использовать другой формат (сериализованный или json)?

0

Использование:

$phpcode = "\$myarray = " . var_export($query, true) . ";"; 

Это возвращает строковое представление вашего массива $ запроса, правильный код PHP.

PS. Вы не думаете об использовании eval() на нем позже, не так ли?

Смежные вопросы