Невозможно оценить строковый массив - PullRequest
0 голосов
/ 20 декабря 2011

Как я могу изменить это на массив JSON?Я использую технику eval, но это не работает.Я получаю такой ответ от нашего сервера upx:

array(
    'invoice' => array(
        'id' => '4',
        'realid' => '4',
        'address_rev' => NULL,
        'relation_data_id' => '3',
        'contact_set_rev' => '3',
        'business_data_rev' => '4',
        'private_data_rev' => NULL,
        // etc..
    )
); 

var_dump($newdata); // String
eval("\$newdata = \"$newdata\";");
var_dump($newdata); // Still stays as a string as shown above....

Любая подсказка?

Ты уже!

Ответы [ 3 ]

3 голосов
/ 20 декабря 2011

Вы будете очень плохо смотреть в лицо, когда я скажу вам это ..

Но причина, по которой это все-таки строка, заключается в том, что вы завернули ее в "" внутри вызова eval и, конечно,буквы внутри кавычек сделают это .. ( барабанная дробь ..) строкой.

 eval ('$newdata = ' . $newdata . ';'); // this will do what you want

Если вы хотите сразу превратить это в json, используйте ниже:

 eval ('$newdata = json_encode (' . $newdata . ');');
2 голосов
/ 20 декабря 2011
var_dump($newdata); // String
eval("\$newdata = $newdata;");
var_dump($newdata); // Still stays as a string as shown above....
// eval("\$newdata = \"$newdata\";");
//                    ^         ^

Удалить двойные кавычки. Вы просто кладете его обратно в строку ...

Хотя, как я уже сказал выше, если вы хотите передать массив PHP, вы должны использовать serialize()

1 голос
/ 20 декабря 2011

Вы можете попробовать json_encode из php. Вы можете попробовать

$json_array = json_encode($your_array);

Это даст вам кодированный в json массив. Затем вы можете выполнить json_decode для $ json_array, чтобы получить исходное содержимое

Проверьте, имеет ли ваш php расширение JSON

...