連想配列(PHP)から値のサブセットを抽出します
-
05-09-2019 - |
質問
私は非常に単純な一見何かをしたいが、私はそれについて何かを見つけることができません。単にarray_spliceに類似した配列のサブセットを抽出しますが、の値を取得するためにキーを使用しての
$data = array('personName' => 'John', 'personAge' => 99, 'personId' => 1,
/* many more data I don't need here ... */);
list($name, $age, $id) = array_splice_by_keys($data,
array('personName', 'personAge', 'personId');
他のすべてが失敗した場合は、キーで連想配列をフィルタリングするための組み込み関数が存在しないのですか?たとえばます:
の $ filteredArray = array__extract__keys__and__values($ srcArray、$ arrayOfWantedKeys); の
// create a new array with ONLY those key => values I need
$wanted_values = array_extract_keys_and_values($data,
array('personName', 'personAge', 'personId');
echo $wanted_values['personName'];
私は最初のものをやりたい理由を推測する、で(それはかなり良く使用されている値をコピーするために最適化されたと思われる、私はすべての私のコードの上に連想配列アクセスを繰り返して好きではないということですローカル変数に例えばループ)、それに加えて$のsomearray [「名前」]より$名前を入力する方がはるかに簡単です。
編集:おかげで、私はリストで使用するために推測し、解決策は以下のようになります。
list($x, $y, $z) = array_values(array_intersect_key($array, array_flip($wantedKeys)));
array_flipの使用をIntesresting!
解決
PHPのバージョンで> =あなたが使用することができます5.1.0 array_intersect_key
するます:
$data = array('personName' => 'John', 'personAge' => 99, 'personId' => 1,
'test' => 23);
$ex = array('personName'=>0, 'personAge'=>0, 'personId'=>0);
var_dump(array_intersect_key($data, $ex));
$ex
の値は関係ありません、彼らはただ存在しなければならない。
他のヒント
これは、本質的にSilentGhostの答えと同じですが、これは簡単に、そしておそらく少し遅いかもしれません。
array_intersect_key($array, array_flip($wantedKeys));
所属していません StackOverflow