0 レビュー
3 回答
オブジェクトの配列に対するphpのarray_searchの使用
http://php.net/manual/en/function.array-search.php を使用すると、配列値に基づいて最初の配列キーを見つけることができます。
値が配列値のオブジェクトにネストされている場合、これは単一のPHP関数で実行できますか、それとも以下に示すように手動で実行する必要がありますか?
ありがとうございます
<?php
function getKeyBasedOnName($arr,$name)
{
foreach($arr as $key=>$o) {
if($o->name==$name) return $key;
}
return false;
}
$json='[
{
"name": "zero",
"data": [107, 31, 635, 203, 2]
},
{
"name": "one",
"data": [133, 156, 947, 408, 6]
},
{"name": "two",
"data": [1052, 954, 4250, 740, 38]
}
]';
$arr=json_decode($json);
var_dump(getKeyBasedOnName($arr,'zero')); //Return 0
var_dump(getKeyBasedOnName($arr,'one')); //Return 1
var_dump(getKeyBasedOnName($arr,'two')); //Return 2
var_dump(getKeyBasedOnName($arr,'three')); //Return false
わからない
0
レビュー
答え :
解決策:
配列が0
ベースのシーケンシャルキーの場合:
echo array_search('zero', array_column(json_decode($json, true), 'name'));
- すべての
name
キー値を単一の配列に抽出します - name値を検索して、キーを返します
これにより、JSONが配列にデコードされます。必要に応じて、後でオブジェクトにデコードできます。 PHP 7以降、オブジェクトの配列を使用できます。
echo array_search('zero'、array_column(json_decode($ json)、'name'));
わからない
0
レビュー
答え :
解決策:
任意の比較を提供する単一の組み込み関数はありません。ただし、独自の一般的な配列検索を実行することはできます:
function array_usearch(array $array, callable $comparitor) {
return array_filter(
$array,
function ($element) use ($comparitor) {
if ($comparitor($element)) {
return $element;
}
}
);
}
これには、後で検索する必要がある単一のキーではなく、一致の配列を比較関数に返すという利点があります。パフォーマンスO(n)もあり、問題ありません。
例:
array_usearch($arr, function ($o) { return $o->name != 'zero'; });
わからない
0
レビュー
答え :
解決策:
print_r($json[array_search('zero', array_column(json_decode($json, true), 'name'))]->data);
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。