0
我有这个奇怪的问题,我不知道如何标题的问题 - 建议?跳过循环在foreach if语句
无论如何,有一个数组,我正在循环。
<?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或返回'1',出于某种原因,它会为我的数组数组添加1。这意味着我的数组现在将是1,2,3,41。我必须explode()
$numbers
数组,因为in_array()
期望参数二是一个数组,但是,我拥有的是一个逗号分隔的字符串 - 所以它必须首先转换为数组。
它为什么将它添加到最后?我基本上只想提取$arr
,如果它的id
等于$numbers
内的任何数字。
我不只是需要匹配'$ arr's'的ID,我需要'$ arr'具有的每个键。我只是想根据我的'$ numbers' var在'$ array'内提取某些数组。 – ProEvilz
我在// id的第一个字段之后放了// etc,因为我正在使用的数组非常大,在本次演示中并不完全需要。对不起,有任何混淆 – ProEvilz
@ProEvilz那么'$ arrayIds'包含'$ array'的所有ID,如果这就是你要找的。 –