假设一个PHP数组,转换为JSON时,具有以下格式:有效地找到基于属性值嵌套PHP数组元素
[{
"key": "width",
"value": "1200",
"label": "Width (mm)",
"choice": ""
},
{
"key": "height",
"value": "900",
"label": "Height (mm)",
"choice": ""
},
{
"key": "material",
"value": "paper",
"label": "Material",
"choice": "Paper"
}]
(这是原来的缩短版本,它可以有许多更多的元素)
让我们假设我想有效地找到使用什么材料。换句话说,我想搜索一个嵌套数组,其值为key
,值为material
,我想返回value
,这将是paper
。
我知道这可以通过使用foreach/while循环来完成,但PHP丰富了编译的数组函数,我不太熟悉。这里使用的最佳功能是什么?
更新:我已经试过到目前为止
这里有两两件事至今我已经试过:
尝试#1:
$json = '[{"key":"width","value":"1200","label":"Width (mm)","choice":""},{"key":"height","value":"900","label":"Height (mm)","choice":""},{"key":"material","value":"paper","label":"Material","choice":"Paper"}]';
$array = json_encode($json, true);
$material = '';
foreach($array as $nestedArray) {
if($nestedArray['key'] = 'material') {
$material = $nestedArray['value'];
}
}
尝试#2 :
$json = '[{"key":"width","value":"1200","label":"Width (mm)","choice":""},{"key":"height","value":"900","label":"Height (mm)","choice":""},{"key":"material","value":"paper","label":"Material","choice":"Paper"}]';
$array = json_decode($json, true);
$filteredArray = array_filter($array, function($array) {
return ($array['key'] == 'material');
});
$arr = array_pop($filteredArray)['value'];
两者都产生正确的值,但#1很混乱,#2可能不是PHP数组函数的最佳使用。
它是一个JSON字符串? – Andreas
有效,因为在microoptimize,或有效率作为内存使用,或有效,因为在代码中写的?它最初存在的JSON – mario
@Andreas文本字符串,正确 –