[英]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.