我有阵列:
$persons = [
'name_1' => 'asfddf',
'name_2' => 'gsdg',
'name_3' => '23423',
'name_aaa' => '123sdg',
'test' => '123sdg',
'other' => '123sdg',
'name_5' => 'sdg2334',
];
如何从键中获得name
?
在我的例子中,我希望收到:
$persons = [
'name_1' => 'asfddf',
'name_2' => 'gsdg',
'name_3' => '23423',
'name_aaa' => '123sdg',
'name_5' => 'sdg2334',
];
我可以使用foreach
并按strpos
检查密钥,但也许更好的方法呢?任何地图减少?
答案 0 :(得分:3)
PHP 5.6及其解决方案以上:强>
您可以将array_filter
与ARRAY_FILTER_USE_KEY
标志一起使用:
$array = array_filter($persons, function($key) {
return strpos($key, 'name') === 0;
}, ARRAY_FILTER_USE_KEY);
print_r($array);
旧版本的解决方案:
这使用密钥进行比较,然后使用array_intersect_key
$array = array_filter(array_keys($persons), function($key) {
return strpos($key, 'name') === 0;
});
print_r(array_intersect_key($persons, array_flip($array)));
<强>打印强>
Array
(
[name_1] => asfddf
[name_2] => gsdg
[name_3] => 23423
[name_aaa] => 123sdg
[name_5] => sdg2334
)
答案 1 :(得分:0)
您可以使用substr
foreach($persons as $key => $value){
if("name_" == substr($key,0,5)){
// process the value
}
}
或者您可以使用preg_match
foreach($persons as $key => $value){
if (preg_match('/name_/',$key)) {
echo $value;
}
}