我有这个奇怪的问题,我不确定如何标题 - 建议?
无论如何,有一个我正在循环的阵列。
<?php
$array = array(
0 => array (
'id' => '3'
//etc
),
1 => array (
'id' => '4'
//etc
),
2 => array (
'id' => '5'
//etc
), //etc
);
$numbers = '1,2,3,4';
foreach ($array as $arr) {
if (! check_array($arr['id'], explode(',', $numbers)) ) {
continue;
}
echo 'My ID is: '.$arr['id'];
// output should only contain 3 and 4 since the rest didn't match
}
function check_array($id, $numbers) {
if(in_array($id, $numbers)) {
return true;
}
}
如果$arr['id']
NOT 与$numbers
数组中的值匹配,则跳过当前迭代。
它几乎可以正常工作,因为check_array()
返回true或返回&#39; 1&#39;,由于某种原因它会在我的数组中添加1。
这意味着我的数组现在是1,2,3,41。我必须explode()
$numbers
数组,因为in_array()
期望参数2是一个数组,但是,我所拥有的只是一个逗号分隔的字符串 - 所以它必须首先转换为数组。
为什么要将它添加到最后?我基本上只想提取$arr
id
,如果它$numbers
等于RewriteRule
中的任何数字。
答案 0 :(得分:1)
从下面的OP's comment,
我不需要匹配的$ arr的ID,我需要$ arr拥有的每个键。我只想根据我的$ numbers var。
提取$ array中的某些数组
如果要根据$array
ID从$numbers
中提取匹配的内部数组,解决方案将如下所示:
$numberIds = explode(',', $numbers);
$resultArr = array();
foreach($array as $arr){
if(in_array($arr['id'], $numberIds)){
$resultArr[] = $arr;
}
}
// display $resultArr array
var_dump($resultArr);