1

我是使用数组的新手,所以我需要一些帮助。从数组中只获取一个值。我有一个看起来像这样的原始数组:

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

我想要做的是搜索并返回下划线后的值。我已经弄清楚如何将该数据放入第二个数组并将值作为新数组返回。

    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]I'm just not sure这是否是最好的方法以及是否是如何进行搜索来获取下划线后的 id 或部分的列表。我试过使用in_array(),但它搜索整个数组,我不能让它只搜索数组的一个键。

任何帮助都会很棒。

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 回答