【发布时间】:2018-02-14 09:46:49
【问题描述】:
我遇到了问题,我尝试在controller 上使用foreach 重命名我的$query->result_array(),并使用另一个foreach 在view 中调用它以显示来自$query->result_array(); 的结果
我是这样做的。
我的controller:
我有一个名为logs() 的用户定义函数,我在里面有一个查询并使用$query->result_array() 来获取结果。然后我使用foreach{} 重命名它,如下面的代码:
$result = array();
foreach ($query->result_array() as $row) {
$result = array(
"id" => $row['id'],
"name" => $row['name'],
"status" => $row['status'],
"time" => $row['time']
);
}
return $result;
然后我创建了另一个名为 filtered_logs() 的用户定义函数来过滤来自 logs() 的结果 *我过滤它是因为我有多个表到 LEFT JOIN 它。
$filtered = array();
$logs = $this->logs();
if ($logs['status'] == "ok") {
$query = $this->db->query("SELECT * FROM table a
LEFT JOIN table b
ON a.image = b.image
LEFT JOIN ....ON...
WHERE a.id = '".$logs['id']."'");
foreach ($query->result_array() as $row){
$filtered = array(
"path" => $row['path'],
"grade" => $row['grade'],
"time" => $logs['time'],
);
}
}
把这些结果发给view我用了这个方法,放在controller的index上。
$data['logs'] = $this->filtered_logs();
$this->load->view('pages', $data);
然后使用这些代码在view 上显示它:
<?php
foreach ($logs as $row) {
echo $row['id']." </br>";
echo $row['status']." </br>";
echo $row['time']." </br>";
}
?>
但是当我确实使用这种处理 result_array 的方式时,它给了我一个错误提示“非法字符串偏移”
谁能帮助我或告诉我是否有其他方式显示我的查询结果?
【问题讨论】:
-
一方面,您可能希望像这样添加大括号 []:$result[] = array(...) 而不是 $result = array(...)。否则,您不会向 $array 添加元素,而是分配一个新值。
-
你错过了 "name" 中的单引号 => $row['name'],
标签: php arrays codeigniter