[英]How to transform a json object into a key->value array
我有一个看起来像这样的json对象(出于可读性而被截断):
{"value":["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda"
],"order":[0,1,2,3,4,5,6,7,8,9
]}
如何使用PHP创建可在选择循环中使用的键->值数组?
我知道如何从PHP数组中进行选择,但是这个JSON的怪异设置使我感到困惑。 我需要使用JSON对象的“值”部分作为值,并使用“订单”作为键。
任何指针或想法,将不胜感激。
您可以使用json_decode:
$arr = json_decode($json, true);
假设$ json是你的字符串在这里
这应该对你有帮助
// your JSON string
$json = '{"value":["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda"],"order":[0,1,2,3,4,5,6,7,8,9]}';
// decode the JSON string into a usable data structure in PHP
$data = json_decode($json);
// create an empty array to store your result
$map = array();
// iterate over the $data
// map each `order` to each `value`
foreach ($data->order as $idx => $key) {
$map[$key] = $data->value[$idx];
}
// display the result
var_dump($map);
产量
array(10) {
[0]=>
string(11) "Afghanistan"
[1]=>
string(7) "Albania"
[2]=>
string(7) "Algeria"
[3]=>
string(14) "American Samoa"
[4]=>
string(7) "Andorra"
[5]=>
string(6) "Angola"
[6]=>
string(8) "Anguilla"
[7]=>
string(10) "Antarctica"
[8]=>
string(19) "Antigua and Barbuda"
[9]=>
NULL
}
您会注意到key:9
(第十个键)为NULL
因为您只有9个值。
尝试这个:
$json = '{"value":["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua", "Barbuda"],"order":[0,1,2,3,4,5,6,7,8,9]}';
// create a temp array to access the JSON-Data
$array = json_decode($json, true);
// Combine the two "parts" of the JSON-Data as keys and values of the new array
$array = array_combine($array['order'], $array['value']);
print_r($array);
输出将是:
Array
(
[0] => Afghanistan
[1] => Albania
[2] => Algeria
[3] => American Samoa
[4] => Andorra
[5] => Angola
[6] => Anguilla
[7] => Antarctica
[8] => Antigua
[9] => Barbuda
)
(!)我的解决方案需要相同数量的Kys和Values。 对于我的解决方案,您的JSON错误。 我更正了这个问题(“安提瓜和巴布达”->“安提瓜”,“巴布达”)看@naomik帖子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.