3

配列キーを検索することは可能ですか?

次の配列があるとしましょう。

$array = array('array_one' => 'a', 'array_two' => 'b', 'three' => 'c');

そして、私はこの配列を取得したいだけです:

$array = array('array_one' => 'a', 'array_two' => 'b');

したがって、キーに文字列'array_'を含む値を持つすべてのキーをフェッチしたいと思います。

ありがとう!

4

4 に答える 4

3

array_filterキーで使用してから交差させることができます。

$validKeys = array_filter(array_keys($array),
    function($key) {
        return substr($key, 0, 6) === 'array_';
    }
);

$array = array_intersect_key($array, array_flip($validKeys));
于 2013-02-28T15:29:52.917 に答える
3

静的にフィルタリングするには、次を使用できます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;
    }
}
于 2013-02-28T15:31:58.063 に答える
3

代わりに負のフィルターを使用できます。

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);
于 2013-02-28T15:32:27.320 に答える
1

私はforeachループを考えています:

$search='_array';
foreach ($array as $k => $v) {

    if (strpos($a, $search)!==false) echo "$search is in $k!<br />";

} 
于 2013-02-28T15:29:17.327 に答える