列出错误的电子邮件地址

时间:2014-07-06 11:10:21

标签: php arrays regex codeigniter object

我正在使用CodeIgniter PHP foreach循环浏览我的电子邮件列表,找出任何不符合正则表达式要求的旧电子邮件并将其列出。

我在显示对象的结果时遇到了一些麻烦。

这就是我所拥有的:

PHP:

        $this->db->where('status', 'subscribed');
        $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;

        $record_raw=array_unique($email_raw);

        $data['record'] = json_decode (json_encode ($record_raw), FALSE);

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

在Signup_test_view的HTML中,我有:

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

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

      <?php endforeach; ?>

错误消息msg说:

在D:\ views \ login&amp; signup \ signup_test_view.php中的非对象上调用成员函数result()

但我认为我已经将数组转换为对象:

  $data['record'] = json_decode (json_encode ($record_raw), FALSE);

非常感谢!

2 个答案:

答案 0 :(得分:0)

json_decode($str,false)的输出是一个普通对象,没有任何方法。

尝试:

<?php foreach ($record as $row): ?>
<span><?php echo $row->email; ?></span><br>
<?php endforeach; ?>

我认为$data['record']已映射到$record中的signup_test_view.php

答案 1 :(得分:0)

$ record是没有方法的简单数组。  尝试使用$ record而不是$ record-&gt; result()到$ record。

玩得开心。