2014-12-26 2 views
-1
{"items":[ 
{ 
"name":"xyz", 
"traits":["a","b","c","d"],  
"specialities":["a","b","c","d"] 
}, 
{ 
"name":"abc", 
"traits":["a","b","c","d"],  
"specialities":["a","b","c","d"] 
} 
]} 

Как читать traits и specialities ... items->traits и items->traits[0] не кажется, работает! Веди меня через это, пожалуйстаЧтение JSON с PHP

$data=json_decode($json); foreach($data->items as $playerdata) { /* I tried $traits=$playerdata->traits; and $traits=$playerdata->traits[0]; and $traits=$playerdata[0]->traits (althought i dont know why) */ }

Я хочу хранить все значения внутри traits и specialities внутри $traits и $specialities соответственно

PS: Пожалуйста, игнорируйте синтаксических ошибок .. я надеюсь, что вы получите общее gist

+0

Кстати, это недействительно json, следует указать первый ключ. Если это действительно ваша строка, 'json_decode' не будет работать. – jeroen

+0

это была опечатка, и я подумал, что это было довольно очевидно ... –

+0

Как это очевидно? – jeroen

ответ

2

вам нужно использовать функцию json_decode(),

$my_object = json_decode($json_string); 

, то вы должны быть в состоянии получить доступ к нему, как вы нормально делать с объектами

это пример того, как вы следует сделать это

<?php 

$json = '{"items":[ { "name":"xyz", "traits":["a","b","c","d"], "specialities":["a","b","c","d"] }, { "name":"abc", "traits":["a","b","c","d"], "specialities":["a","b","c","d"] } ]}'; 

$my_object = json_decode($json); 

var_export($my_object->items[0]->name); 

и это как вы можете сс черта и специальности

$traits = []; 
$specialities = []; 

echo "the traits are:\n"; 
foreach($my_object->items as $item) 
{ 
    var_dump($item->traits); 
    $traits[] = $item->traits; 
    echo "\n"; 
} 

echo "\n\n"; 
echo "the specialities are:\n"; 
foreach($my_object->items as $item) 
{ 
    var_dump($item->specialities); 
    $specialities[] = $item->specialities; 
    echo "\n"; 
} 

от var_dump вы можете увидеть, что traits и specialities являются массивами, то вы можете просто открыть их как массив, или написать функцию, которые принимают массив и возвращают wathever вы ищете.

+0

Предположим, что я декодирую его в '$ data' ..' $ data [items] [$ i] [черты] '?? –

+0

@MageshKumaar '$ data-> items [$ i] -> traits' – Barmar

+0

@MageshKumaar, пожалуйста, ознакомьтесь с моими изменениями и дайте мне знать, если это вам поможет. –

0

Используйте функцию json_decode из php и расшифруйте строку. Затем у вас есть массив, и вы можете получить к нему доступ.

http://php.net/manual/en/function.json-decode.php

+0

Хорошо .. так как это будет работать. Я могу его декодировать до '$ data' ..' $ data [items] [traits] '? –

+0

var_dump ваш декодированный массив, а затем вы увидите, как это сделать. Я думаю, что сначала вам нужно перебирать свои предметы – Stony

+0

да .. Я понял, что .. поэтому его '$ data [" items "] [$ i] [" traits "]' ?? –

0
<?php 

$d = '{"items":[ 
{ 
"name":"xyz", 
"traits":["a","b","c","d"],  
"specialities":["a","b","c","d"] 
}, 
{ 
"name":"abc", 
"traits":["a","b","c","d"],  
"specialities":["a","b","c","d"] 
} 
]}'; 

$h = json_decode($d); 

foreach($h->items as $i){ 
    $traits[] = $i->traits; 
    $specialities[] = $i->specialities; 
} 

echo "<pre>"; 
print_r($specialities); 
echo "<pre>"; 

?> 
+0

Да, чувак .. это работает .. но будешь ли ты любезней сказать мне, как хранить $ черты [ ] как единое значение в таблице, например, в столбце признаков –

+0

для отображения отдельных признаков в столбце таблицы использовать forloop в массиве $ traits 'for ($ i = 0; $ i