配列キーを検索することは可能ですか?
次の配列があるとしましょう。
$array = array('array_one' => 'a', 'array_two' => 'b', 'three' => 'c');
そして、私はこの配列を取得したいだけです:
$array = array('array_one' => 'a', 'array_two' => 'b');
したがって、キーに文字列'array_'を含む値を持つすべてのキーをフェッチしたいと思います。
ありがとう!
array_filterキーで使用してから交差させることができます。
$validKeys = array_filter(array_keys($array),
function($key) {
return substr($key, 0, 6) === 'array_';
}
);
$array = array_intersect_key($array, array_flip($validKeys));
静的にフィルタリングするには、次を使用できますarray_intersect_key。
$allowed = array('foo', 'bar');
$filtered = array_intersect_key($array, array_flip($allowed));
あなたの場合、私はあなたがループする必要があると思います:
$filtered = array();
foreach($array as $key => $val) {
if(false !== strpos($key, 'array_')) {
$filtered[$key] = $val;
}
}
代わりに負のフィルターを使用できます。
foreach ($array as $key => $value) {
if (strpos($key, 'array_') !== 0) {
unset($array[$key]);
}
}
アレイをインプレースで変更することに注意してください。
アップデート
または、5.6以降、次を使用できるようになりましたarray_filter。
$array = array_filter($array, function($value, $key) {
return strpos($key, 'array_') === 0;
}, ARRAY_FILTER_USE_BOTH);
私はforeachループを考えています:
$search='_array';
foreach ($array as $k => $v) {
if (strpos($a, $search)!==false) echo "$search is in $k!<br />";
}