Foreach внутри функции - PullRequest
       1

Foreach внутри функции

1 голос
/ 24 марта 2011
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 как $ id2.Мне нужно передать $ data1 и $ data2 to go (), которые должны каждый раз отличаться.

Проблема здесь в том, что я продолжаю получать 'Invalid аргумент, предоставленный для foreach ()' всякий раз, когда я пытаюсь запустить код.Кто-нибудь знает, в чем здесь проблема?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 24 марта 2011

Вы можете сделать все это с помощью одного цикла foreach без создания ненужных массивов данных:

foreach($query->result() as $getrow) {
   $this->heart->go($getrow->data1, $getrow->data2);
}
0 голосов
/ 24 марта 2011

Я полагаю, что вы действительно хотите создавать массивы $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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...