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