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,如果這就是你要找的。 –