に基づいて、ネストされたPHPの配列要素は、PHP配列を仮定見つけ、以下のフォーマットを有する:を効率的に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"
}]
(これはオリジナルの短縮バージョンであり、より多くを有することができます要素)
どのような素材が使用されているかを効率的に探したいとしましょう。言い換えれば、key
の値がmaterial
の入れ子になった配列を検索し、value
を返したいと思います。paper
です。
これはforeach/whileループを使用して行うことができますが、PHPにはよく慣れていないコンパイル済み配列関数が豊富であることがわかります。ここで使うのに最高の機能は何ですか?
UPDATE:私は試した何遠い
ここで私はこれまで試した二つのものです:
試み#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テキスト文字列ですか?microoptimizeのように効率的な、またはメモリ使用量のように効率的に、あるいは効率的な – Andreas
コードで書かれた?それはもともとJSONとして存在 – mario
@Andreasテキスト文字列、正しい –