41

私は配列を持っており、その配列には次のような配列キーがあります。show_me_160この配列キーは少し変更される可能性があるため、ページがロードされ、配列キーがおそらく読み込まれる可能性があります。配列キーshow_me_120と文字列を一致させることができるようになりたいです_最後のアンダースコアの後の値を確認できるように、最後まで?

4

7 に答える 7

32

私が考えることができる1つの解決策:

foreach($myarray as $key=>$value){
  if("show_me_" == substr($key,0,8)){
    $number = substr($key,strrpos($key,'_'));
    // do whatever you need to with $number...
  }
}
于 2010-10-14T10:03:44.960 に答える
9

配列を直接クエリする可能性がないため、配列を反復処理して各キーを個別にチェックする必要があります(配列にはまったく無関係のキーも保持されていると想定していますが、ifそうでない場合はその部分をスキップできます場合):

foreach($array as $k => $v)
{
  if (strpos($k, 'show_me_') !== false)
  {
    $number = substr($k, strrpos($k, '_'));
  }
}

しかし、これはデータを保存する非常に奇妙な方法のように思えます。もし私があなたなら、アプリケーションでデータを渡す (より効率的な) 方法が他にないかどうかを確認します ;)

于 2010-10-14T10:08:25.927 に答える
4

preg_matchベース ソリューションを使用することもできます。

foreach($array as $str) {
        if(preg_match('/^show_me_(\d+)$/',$str,$m)) {
                echo "Array element ",$str," matched and number = ",$m[1],"\n";
        }
}
于 2010-10-14T10:12:25.360 に答える
-1
 foreach($myarray as $key=>$value)
    if(count(explode('show_me_',$event_key)) > 1){
         //if array key contains show_me_
    }

詳細情報 (例):

配列キーに「show_me_」が含まれている場合

$example = expand('show_me_','show_me_120');

print_r($example)

Array ( [0] => [1] => 120 ) 

print_r(count($example))

2 

print_r($example[1])

 120 
于 2016-07-13T10:18:53.150 に答える