4

好的,我在 PHP 中有这种关联数组

$arr = array(
    "fruit_aac" => "apple",
    "fruit_2de" => "banana",
    "fruit_ade" => "grapes",
    "other_add" => "sugar",
    "other_nut" => "coconut",
);

现在我想要的是只选择以 key 开头的元素fruit_。这怎么可能?我可以使用正则表达式吗?或任何可用的 PHP 数组函数?有什么解决方法吗?请为您的解决方案举一些例子

4

4 回答 4

5
$fruits = array();
foreach ($arr as $key => $value) {
    if (strpos($key, 'fruit_') === 0) {
        $fruits[$key] = $value;
    }
}
于 2012-05-28T06:38:17.563 回答
3

一种解决方案如下:

foreach($arr as $key => $value){
     if(strpos($key, "fruit_") === 0) {
         ...
         ...
     }
}

=== 确保在位置 0 找到字符串,因为 strpos 也可以在未找到字符串时返回 FALSE。

于 2012-05-28T06:39:03.490 回答
3

你试一下:

function filter($var) {

    return strpos($var, 'fruit_') !== false;

}

$arr = array(
    "fruit_aac"=>"apple",
    "fruit_2de"=>"banana",
    "fruit_ade"=>"grapes",
    "other_add"=>"sugar",
    "other_nut"=>"coconut",
);

print_r(array_flip(array_filter(array_flip($arr), 'filter')));
于 2012-05-28T06:47:40.847 回答
2

如果您想尝试正则表达式,那么您可以尝试下面给出的代码...

$arr = array("fruit_aac"=>"apple",
    "fruit_2de"=>"banana",
    "fruit_ade"=>"grapes",
    "other_add"=>"sugar",
    "other_nut"=>"coconut",
);

$arr2 = array();

foreach($arr AS $index=>$array){
if(preg_match("/^fruit_.*/", $index)){
        $arr2[$index] = $array;
}
}

print_r($arr2);

我希望它对你有帮助。

谢谢

于 2012-05-28T07:34:26.283 回答