Codeigniter传递数组以查看,或使用foreach循环将数组转换为对象

时间:2014-07-09 14:08:27

标签: php arrays codeigniter object foreach

最近我遇到了一个问题,我需要从CodeIgniter PHP foreach循环生成一个对象。基本上我需要过滤我的电子邮件列表并根据结果生成对象,然后将其传递给视图并使用另一个foreach循环列出内容。

这里有我所拥有的并且它成功生成了一个数组$ email_raw,但我无法找到将其生成为对象的正确方法:

PHP:

    $email_preliminary=$this->db->select('email')->get('user'); 

    $email_raw = array();

    foreach ($email_preliminary->result() as $row):

        $email_to_test=$row->email;

        if(filter_var($email_to_test, FILTER_VALIDATE_EMAIL)||preg_match('/\d*[1-9]\d*/', $email_to_test))
        {
            $email_raw[] = $email_to_test;
        }

        else{

        }
    endforeach;

人们建议我使用:

                $email_raw[] = (object)array('email'=>$email_to_test);

但错误消息msg表示它不是一个对象。

我可以通过其他方式生成$ email_raw作为对象,以便将其传递给视图并使用foreach列出内容吗?

非常感谢!

更新

根据请求,这里是控制器的其余部分:

        $data['record']=array_unique($email_raw);

        $this->load->view('login&signup/signup_test_get_wrong_email_view', $data);

和我使用的视图:

      <?php foreach ($record->result() as $row): ?> 

    <span><?php echo $row->email; ?></span><br>

      <?php endforeach; ?>

1 个答案:

答案 0 :(得分:1)

foreach可以迭代对象和数组。您不必将数组转换为对象。

将控制器保留在上面:

$email_preliminary=$this->db->select('email')->get('user'); 

$email_raw = array();

foreach ($email_preliminary->result() as $row):

    $email_to_test=$row->email;

    if(filter_var($email_to_test, FILTER_VALIDATE_EMAIL)||preg_match('/\d*[1-9]\d*/', $email_to_test))
    {
        $email_raw[] = $email_to_test;
    }

    else{

    }
endforeach;

// ... code

$data['record']=array_unique($email_raw);

$this->load->view('login&signup/signup_test_get_wrong_email_view', $data);

在视图中,您只需迭代刚构建的数组:

<?php foreach ($record as $email): ?> 

    <span><?php echo $email; ?></span><br>

<?php endforeach; ?>

我猜你的疑问来自于不了解$data['record']变量的样子。在设置print_r($data['record']);后立即使用$data['record']