4

OK、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

1つの解決策は次のとおりです。

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 に答える