我一直这样:
[0] => Array
(
[0] => Array
(
[thread_id] => 136
[owner_id] => 1
[subject] => asdhjkasdh
[body] => askjdhaksjd
[timestamp] => 2012-03-22 22:03:51
[slug] => asdhjkasdh
)
)
[1] => Array
(
[0] => Array
(
[thread_id] => 137
[owner_id] => 1
[subject] => asdhjkasdh
[body] => askjdhaksjd
[timestamp] => 2012-03-22 22:03:56
[slug] => asdhjkasdh
)
)
但我需要每个[0]和[1]来包含数据,而不是另一个数组。
这是我的代码:初始查询以数组形式返回thread_id。然后我使用thread_id从线程表中提取信息。虽然我似乎无法在数组中正确组织它。
$query = $this->db->query($sql);
$result = $query->result_array();
$thread = array();
foreach ($result as $thread_id)
{
$id = $thread_id['thread_id'];
$query = $this->db->query("SELECT * FROM thread WHERE thread_id='$id'");
array_push($thread, $query->result_array());
}
print_r($thread);
return $thread;
谢谢!
答案 0 :(得分:2)
看起来你的数据库对象正在返回一个被推送到$ thread数组的多维数组。 而不是
array_push($thread, $query->result_array());
试
$thisRow = $query->result_array();
array_push($thread, $thisRow[0] );
此外,您似乎正在运行一个查询,循环遍历结果,然后运行另一个查询。这通常不是检索数据的非常有效的方法,通常可以使用JOIN进行重构。也许将您的单独查询发布为新问题,以便我们帮助您改进。
答案 1 :(得分:1)
使用array_merge
代替array_push
然后
答案 2 :(得分:0)
这是因为$query->result_array()
会给你一个数组,即使它只有一行。
之后,将该数组推入您的数组($ thread)。
如果您确定总会得到一行,则可以更好地使用
$row = $query->row();
可能会在您的查询中添加LIMIT 1
以确保;)
您也可以
$thread[] = $query->row();