检查值是否在数组的特定键中

时间:2010-12-22 22:40:40

标签: php arrays multidimensional-array foreach explode

我刚接触数组,所以我需要一些帮助。只从阵列获得一个vaule。我有一个原始数组,如下所示:

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

我要做的是搜索并返回下划线后面的值。我已经想出如何将数据转换为第二个数组并将vaules作为新数组返回。

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

给了我:

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

我还可以使用$id[1]获得下划线后面的id或部分列表我不确定这是否是最佳方式,以及它是否如何进行搜索。我已经尝试使用in_array(),但是搜索整个数组,我无法只搜索数组中的一个键。

任何帮助都会很棒。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

如果下划线后的部分是唯一的,请将其作为新数组的键:

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

因此,您可以使用isset($newArray[$mykey])检查密钥是否存在,这将更有效。

答案 2 :(得分:1)

我会说你做的和其他人一样好。

修改

替代方法:

$array1 = array_map(create_function('$a','$_ = explode("_",$a); return $_[1];'),$array1);
echo in_array(3,$array1) ? "yes" : "no"; // 3 being the example

答案 3 :(得分:0)

我不得不同意。如果你希望看到一个数组中存在一个值,那么只需使用'array_key_exists'函数,如果它返回true,则使用任何值。