2013-05-10 3 views
1

Я использую этот html и javascript для отправки данных json в файл php. http://jsfiddle.net/ExpertSystem/9aWNj/Как получить доступ к массиву json в php?

Как получить к нему доступ оттуда в php для эхо-выделения заданного элемента?

Что-то вдоль линий:

$value = json_decode($_POST["newOrder"]) 
echo $value[1]; 

и т.д.

Я не уверен, как извлечь данные из этого.

+0

Мой код здесь -> jsbin.com/igewiv/1/edit и размещен на сервере PHP -> top50.zxq.net/fiddle.php. Я пытаюсь просто эхо отобрать выбранный элемент и их позицию, то есть 2 в позиции 1 или что бы это ни было. поэтому я знаю, что могу хранить их в db и т. д. – user1628206

ответ

0

попробовать это:

$value = json_decode($_POST["newOrder"], true) 
echo "<pre>"; 
print_r($value); 

Обратите внимание на второй параметр true, который дает вам выход как массив еще будет объектом.

0

Проверьте руководство по php.

json_decode возвращает объект по умолчанию. используйте второй параметр true для возврата массива.

json_decode($_POST["newOrder"], true) 
0

Чтобы использовать json в PHP, как я думаю, вы, возможно, захотите, то я предлагаю вам установить истинное значение в функции json_decode.

Это даст вам следующее:

$json = json_decode($data,true); 
$json["sub-values"]["sub thing"]; 
0

Почему отправить JSON как тело запроса POST? Сделать это проще:

$.ajax({ 
    url: "<url_to_php_file>", 
    type: "POST", 
    data: { order: JSON.stringify(dataArr) } 
}); 

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

$value = json_decode($_POST["order"]); 
echo $value[1]; 
1

Вот jsfiddle, чтобы увидеть, как Javascript должен быть в случае, если вы все еще потеряно: http://jsfiddle.net/9aWNj/3/

это ваши данные, декодированные по php:

`stdClass Object ([order] => Array ([0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 9 [8] => 10 [9] => 11 [10] => 1 [11] => 12))` 

Для доступа к нему это будет b е: пример:

$order_0=$value->order[0]; 
$order_1=$value->order[1]; 

Или вы используете верно для json_decode и он станет как этот

$order_0=$value['order'][0]; 
$order_1=$value['order'][1]; 
+0

Я пробовал $ value = json_decode ($ _ POST ["newOrder"], true); echo $ order_0 = $ value ['order'] [0]; и у него не было никакого выхода, есть ли проблема с этим кодом или проблемой в другом месте? – user1628206

+0

вы не можете echo $ order_0 = $ value ['order'] [0]; это должно быть 2 строки: $ order_0 = $ value ['order'] [0]; echo $ order_0; – CodeBird

+0

Я все еще не получаю никаких результатов от этого. Мой код здесь -> http://jsbin.com/igewiv/1/edit и размещен на сервере php -> http://top50.zxq.net/fiddle.php. Я пытаюсь просто эхо отобрать выбранный элемент и их позицию, то есть 2 в позиции 1 или что бы это ни было. поэтому я знаю, что могу хранить их в db и т. д. – user1628206

0

json_decode возврата результата как объекта по умолчанию, чтобы получить массив, который нужно положить второй параметр истина ,

$ data = json_decode ($ _ POST ["newOrder"], false); возвращаемый результат как объект

для использования объекта печати

эхо $ данных-> что-то;

$ data = json_decode ($ _ POST ["newOrder"], true); возвращать результат в виде массива

для печати массива используют

эхо $ данных [ 'что-то'];

0

Попробуйте это, может полезно

$FP=fopen(JSON_DIR."JsonArray.txt",'r'); 
$J_ARRAY=fread($FP,filesize(JSON_DIR."JsonArray.txt")); 
$J_ARRAY=json_decode($J_ARRAY,JSON_FORCE_OBJECT);