簡體   English   中英

在數組中搜索密鑰的一部分 - PHP

[英]Search for part of an key in array - PHP

是否可以搜索數組鍵?

假設我有以下數組:

$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 />";

} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM