可以搜索数组键吗?假设我有以下数组:
$array = array('array_one' => 'a', 'array_two' => 'b', 'three' => 'c');
我只想得到这个数组:
$array = array('array_one' => 'a', 'array_two' => 'b');
所以我想获取每个键,其值包含 key 中的字符串'array_'。谢谢!
yzckvree1#
您可以使用负过滤器(使用strpos):
strpos
foreach ($array as $key => $value) { if (strpos($key, 'array_') !== 0) { unset($array[$key]); } }
Demo请注意,它会就地修改数组。
更新
或者,从5.6开始,您现在可以使用array_filter:
array_filter
$array = array_filter($array, function($value, $key) { return strpos($key, 'array_') === 0; }, ARRAY_FILTER_USE_BOTH);
v8wbuo2f2#
你可以在键上使用array_filter,然后相交:
$validKeys = array_filter(array_keys($array), function($key) { return substr($key, 0, 6) === 'array_'; } ); $array = array_intersect_key($array, array_flip($validKeys));
0g0grzrc3#
要进行 * 静态 * 过滤,可以使用array_intersect_key:
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; } }
2fjabf4q4#
下面是一个foreach循环:
foreach
$search='_array'; foreach ($array as $k => $v) { if (strpos($a, $search)!==false) echo "$search is in $k!<br />"; }
4条答案
按热度按时间yzckvree1#
您可以使用负过滤器(使用
strpos
):Demo
请注意,它会就地修改数组。
更新
或者,从5.6开始,您现在可以使用
array_filter
:v8wbuo2f2#
你可以在键上使用
array_filter
,然后相交:0g0grzrc3#
要进行 * 静态 * 过滤,可以使用
array_intersect_key
:在你的例子中,我认为你需要循环:
2fjabf4q4#
下面是一个
foreach
循环: