我刚接触数组,所以我需要一些帮助。只从阵列获得一个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()
,但是搜索整个数组,我无法只搜索数组中的一个键。
任何帮助都会很棒。
答案 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
)
答案 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,则使用任何值。