1

配列を扱うのは初めてなので、助けが必要です。配列から1つの値を取得するだけです。私は次のような元の配列を持っています:

 $array1= Array(   
     [0] => 1_31   
     [1] => 1_65  
     [2] => 29_885...)

私がやろうとしているのは、アンダースコアの後に値だけを探して返すことです。そのデータを2番目の配列に取得し、値を新しい配列として返す方法を理解しました。

    foreach($array1 as $key => $value){
    $id = explode('_',$value);
}

それは私に与えます:

Array ( [0] => 1  [1] => 31 ) 
Array ( [0] => 1  [1] => 65 ) 
Array ( [0] => 29 [1] => 885 )

アンダースコアの後のIDまたは部分のリストを使用して取得することもできます$id[1]。これが最善の方法であるかどうか、および検索の方法であるかどうかはわかりません。使用してみましin_array()たが、配列全体が検索され、配列の1つのキーだけを検索することはできませんでした。

どんな助けでも素晴らしいでしょう。

4

4 に答える 4

2

preg_grep()配列をgrepするために使用できます。

$array1= array("1_31", "1_65", "29_885");
$num = 65;
print_r(preg_grep("/^\d+_$num$/", $array1));

出力:

Array
(
    [1] => 1_65
)

http://ideone.com/3Fgr8を参照してください

于 2010-12-22T22:51:36.680 に答える
2

アンダースコアの後の部分が一意である場合は、それを新しい配列のキーにします。

$newArray = array();
foreach($array1 as $key => $value){
    list($v,$k) = explode('_',$value);
    $newArray[$k] = $v;
}

したがって、を使用してキーの存在を確認できますisset($newArray[$mykey])。これにより、より効率的になります。

于 2010-12-22T22:52:56.633 に答える
1

私はあなたが他の人と同じようにそれをやっていると言うでしょう。

編集

別の方法:

$array1 = array_map(create_function('$a','$_ = explode("_",$a); return $_[1];'),$array1);
echo in_array(3,$array1) ? "yes" : "no"; // 3 being the example
于 2010-12-22T22:44:37.680 に答える
0

私は同意する必要があります。値が配列に存在することを確認したい場合は、「array_key_exists」関数を使用してください。trueが返される場合は、値を使用してください。

于 2010-12-22T22:53:01.043 に答える