JSON para Array PHP

Eu tenho Json:

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

Como obter uma matriz como esta:

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

 '; $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

Supondo que este é o único JSON que você possui, vamos armazená-lo em $json por causa do exemplo:

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

Primeiro, json_decode seu JSON para que possamos usar o PHP para processá-lo:

 $data = json_decode($json); 

Em seguida, crie uma matriz para armazenar seus dados processados ​​e iterar através dele, recuperar e atribuir valores à matriz para alcançar sua estrutura de desejos:

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

Aqui está um var_dump da matriz resultante:

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

Fácil. Basta usar json_decode e depois rolar a matriz com foreach assim:

 // 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 '
'; print_r($final_values); echo '

';

A saída é:

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

Bordo bastante simples após a decodificação usando json_decode() .

  

A primeira matriz de $data garante esse retorno:

 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 ) ) 

Enquanto a segunda matriz ( $d ) que é criada no loop foreach garante o retorno desejado:

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

Exemplo