有两个假设:要么我误解了这个问题,要么其他人做了。
要点:通过1
作为第二个参数传递给$this->db->get();
方法,它设置LIMIT 1
为查询,你只会得到1
行作为结果。
那么,为什么需要对单行数据库结果使用循环呢?
如果您使用$query->result();
结果将是这样的:
Array
(
[0] => stdClass Object
(
[m_name] => Foo
)
)
要获取该m_name
值,您可以执行以下操作:
$result = $query->result();
echo $result[0]->m_name;
无论如何,如果您需要一个包含该值的数值数组(就像您在循环中所做的那样),您可以简单地通过$name[] = $result[0]->m_name;
.
如果你使用$query->result_array();
结果将是这样的:
Array
(
[0] => Array
(
[m_name] => Foo
)
)
要获取该m_name
值,您可以执行以下操作:
$result = $query->result_array();
echo $result[0]['m_name'];
但是如果你停止限制查询,你的查询结果中有多行,你可以rows1 = $query1->result_array();
改用。并array_map()
操作给定数组的元素:
$rows1 = $query1->result_array();
// `$row1` will be something like this:
Array
(
[0] => Array
(
[m_name] => Foo
)
[1] => Array
(
[m_name] => Bar
)
[2] => Array
(
[m_name] => Baz
)
)
用于array_map()
操作结果数组:
function getName($array) {
return $array['m_name'];
}
$array = array_map("getName", $rows1);
print_r($array);
如果您使用的是 PHP v5.3+,请执行以下操作:
$array = array_map(function($array) {
return $array['m_name'];
}, $rows1);