在阵列上的foreach期间将项添加到数组

时间:2013-09-23 15:58:19

标签: php

我希望在ID的负载上运行foreach。 但是foreach中的每个项都是一个select查询,如果找到更多的ID,则需要将它们添加到foreach中运行的数组中。 E.g

$ids = array();     
foreach($ids as $id)
    {
    SELECT id FROM table WHERE otherid = $id;
    foreach ($query2->result_array() as $row)
         {
         array_push($array, $row['id']);
         }
    }

这显然是伪代码,因此无需更正我的SQL等。如果它找到更多ID,我只需要foreach继续。

可能的?

我试过添加&这里 - > foreach($ids as &$id)正如此处的其他人在类似的问题中提出的那样。这似乎不起作用。

4 个答案:

答案 0 :(得分:0)

你应该只能引用原始数组,即

   foreach ($query2->result_array() as $row)
     {
       $id[] = $row;
     }

这将自动为新数组元素分配一个自动递增的键,并将其添加到$ id数组中。我认为这就是你所追求的目标。

答案 1 :(得分:0)

foreach实际上会使您的数组副本循环播放,您需要使用while

while(list($id_key, $id) = each($ids)){
    //your code
    $ids[] = $row[id];
}

答案 2 :(得分:0)

尝试使用变量进行迭代:

$ids = array();     
$i = 0;
while ($i < count($ids)) {
    $query2->query(SELECT id FROM table WHERE otherid = $ids[$i]);
    foreach ($query2->result_array() as $row)
        $ids []= $row['id'];
    $i++;   
}

答案 3 :(得分:-1)

对于类似的问题,我总是使用两个不同的数组。这样的代码只能对每个id运行一次查询。我认为只有一个数组+ foreach是不可能的;

以下代码非常简单。它会一直找到新的ID,直到没有新的ID。

$ids = array();
$new = array();
$new = $ids;

do {
    foreach($new as $n) {
        $new = array();
        //// HERE PUT YOUR CODE TO RUN A QUERY AND MAYBE PUSH A NEW ID TO $new \\\\
    }
    $ids = array_merge($ids,$new);
} while (count($new)!==0);