Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter将数组传递给视图,或使用foreach循环将数组转换为对象_Php_Arrays_Codeigniter_Object_Foreach - Fatal编程技术网

Php Codeigniter将数组传递给视图,或使用foreach循环将数组转换为对象

Php Codeigniter将数组传递给视图,或使用foreach循环将数组转换为对象,php,arrays,codeigniter,object,foreach,Php,Arrays,Codeigniter,Object,Foreach,最近我遇到了一个问题,我需要从CodeIgniter PHP foreach循环生成一个对象。基本上,我需要过滤我的电子邮件列表并根据结果生成对象,然后将其传递给视图,并使用另一个foreach循环列出其中的内容 以下是我所拥有的,它成功地生成了一个数组$email\u raw,但我找不到正确的方法将其生成为对象: PHP: 人们建议我使用: $email_raw[] = (object)array('email'=>$email_to_test); 但是

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

以下是我所拥有的,它成功地生成了一个数组$email\u raw,但我找不到正确的方法将其生成为对象:

PHP:

人们建议我使用:

                $email_raw[] = (object)array('email'=>$email_to_test);
但是错误消息说它不是一个对象

还有什么其他方法可以生成$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; ?>


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

将控制器保持在上面的状态:

$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']
变量的样子。使用
打印($data['record'])$data['record']
之后立即设置code>。

在生成
$email\u raw
的末尾,使用
$email\u raw=(对象)$email\u raw。整个
$email\u raw
变量变为object。为什么要生成object而不是数组?数组可以很好地工作,而且通常更通用。我想您可能把它误认为是关联数组,否则就没有必要将数组强制转换为对象,因为在您的情况下,这两者的用法没有区别。@machineaddict我试过了,但视图的输出显示:stdClass类的对象不能被转换转换为字符串。有没有办法在foreach循环中直接生成$email_raw作为对象?@Dan和MahanGM,CodeIgniter view说我必须使用一个对象,否则它会说:对非对象intnx的成员函数result()调用很多次。它真的帮助了我。
<?php foreach ($record as $email): ?> 

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

<?php endforeach; ?>