2011-03-24 82 views
1
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。 data2会被传递还是需要像$ data1那样做$ id & & $ data2 as $ id2。我需要将$ data1和$ data2传递给go(),每次都应该有所不同。Foreach里面的功能

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

预先感谢您。

+3

*查询是否成功? – 2011-03-24 01:21:31

回答

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]); 
} 

另外,您可以使用数据1和数据2的键/值对数组

$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); 
} 
0

你可以用一个foreach循环做这一切,而不建立不必要的数据数组:

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