JSON для Array PHP

У меня есть Json:

[{"name":"firstname","value":"wwwwww"},{"name":"lastname","value":"w"},{"name":"age","value":"99"},{"name":"sex","value":"male"}] 

Как получить массив следующим образом:

 array( 'firstname' => 'name', 'lastname' => 'surname', 'age' => '99', 'sex' => 'male' ) 

Related of "JSON для Array PHP"

 <?php echo '<pre>'; $x=json_decode('[{"name":"firstname","value":"wwwwww"},{"name":"lastname","value":"w"},{"name":"age","value":"99"},{"name":"sex","value":"male"}]',true); $out=array(); foreach ($x as $y){ $out[$y['name']]=$y['value']; } print_r($out); 

Live: http://codepad.viper-7.com/kaWRyt

Предполагая, что это единственный JSON, который у вас есть, давайте сохраним его в $json для примера:

 $json = '[{"name":"firstname","value":"wwwwww"},{"name":"lastname","value":"w"},{"name":"age","value":"99"},{"name":"sex","value":"male"}]'; 

Во-первых, json_decode ваш JSON, чтобы мы могли использовать PHP для его обработки:

 $data = json_decode($json); 

Затем создайте массив для хранения обработанных данных, итерации по нему, получения и присвоения значений массиву для достижения вашей структуры желания:

 $processed_data = array(); foreach($data as $data_field) { $processed_data[$data_field->name] = $data_field->value; } 

Вот var_dump полученного массива:

 array(4) { ["firstname"]=> string(6) "wwwwww" ["lastname"]=> string(1) "w" ["age"]=> string(2) "99" ["sex"]=> string(4) "male" } 

Легко. Просто используйте json_decode и затем json_decode массив с помощью foreach следующим образом:

 // JSON string as set in your example. $string = '[{"name":"first name","value":"wwwwww"},{"name":"last name","value":"w"},{"name":"age","value":"99"},{"name":"sex","value":"male"}]'; // Use `json_decode` to decode the JSON with the `true` setting to set output to an array. $array = json_decode($string, true); // Now roll through the array & set the final values. $final_values = array(); foreach ($array as $key => $value) { $final_values[$value['name']] = $value['value']; } // Dump the final values to check the reordering. echo '<pre>'; print_r($final_values); echo '</pre>'; 

Выход:

 Array ( [first name] => wwwwww [last name] => w [age] => 99 [sex] => male ) 

Довольно простой цикл после декодирования с использованием json_decode() .

 <?php $json = '[{"name":"firstname","value":"wwwwww"},{"name":"lastname","value":"w"},{"name":"age","value":"99"},{"name":"sex","value":"male"}]'; $data = json_decode($json, true); $d=''; foreach($data as $item){ $d[$item['name']] = $item['value']; } print_r($data); print_r($d); ?> 

Первый массив $data гарантирует это возвращение:

 Array ( [0] => Array ( [name] => firstname [value] => wwwwww ) [1] => Array ( [name] => lastname [value] => w ) [2] => Array ( [name] => age [value] => 99 ) [3] => Array ( [name] => sex [value] => male ) ) 

Хотя второй массив ( $d ), созданный в цикле foreach, гарантирует требуемое возвращение:

 Array ( [firstname] => wwwwww [lastname] => w [age] => 99 [sex] => male ) 

пример