Foreach内部功能

时间:2011-03-24 01:19:14

标签: php codeigniter

function dp(){

        $this->load->library('heart');



        $times = 35;

        $i = 0; while ($i<$times){
        $this->heart->test();

        //10 newest
        $query = $this->db->get('test', 10, 20);


            //set variables from query
        foreach ($query->result() as $getrow)
        {
         $data1 = $getrow->data1;
         $data2 = $getrow->data2;
        }
        //for each data1; do go();
        foreach ($data1 as $id){
            $this->heart->go($id,$data2);
            }

        //increment $i  
        $i++;   
        }

        }
嘿伙计们,这是我的代码。我试图从数据库中获取最新的条目,然后将它们设置为变量。对于每个变量,我试图调用一个函数来传递$ id(data1)和$ data2。数据2是否会通过,或者我需要像$ data1那样做$ id&amp;&amp; $ data2为$ id2。我需要将$ data1和$ data2传递给go(),每次都应该是不同的。

这里的问题是每当我尝试运行代码时,我都会得到'为foreach()提供的无效参数。任何人都知道这里的问题是什么?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

我相信您实际上想要创建$data1$data2的数组。

目前,每次通过第一个foreach循环时,您都会覆盖每个变量中的值。

$data1 = array();
$data2 = array();
//set variables from query
foreach ($query->result() as $getrow)
{
    $data1[] = $getrow->data1;
    $data2[] = $getrow->data2;
}
//for each data1; do go();
foreach ($data1 as $key => $id){
    $this->heart->go($id,$data2[$key]);
}

或者,您可以使用data1和data2作为数组的键/值对

$data = array();
foreach ($query->result() as $getrow)
{
    $data[$getrow->data1] = $getrow->data2;
}
//for each data1; do go();
foreach ($data as $key => $value){
    $this->heart->go($key, $value);
}

答案 1 :(得分:0)

您可以使用单个foreach循环完成所有操作,而无需构建不必要的数据数组:

foreach($query->result() as $getrow) {
   $this->heart->go($getrow->data1, $getrow->data2);
}