在我的情况下,这两个中哪一个更好?
while loop:
function search_hotel($searchterm)
{
$query = $this->db->order_by("id", "desc")->like('name', $searchterm)->get('hotel_submits');
$data = array();
while($row = mysql_fetch_array($query))
{
$data[] = $row->name;
}
return $data;
}
Foreach循环:
function search_hotel($searchterm)
{
$query = $this->db->order_by("id", "desc")->like('name', $searchterm)->get('hotel_submits');
$data = array();
foreach ($query->result() as $row)
{
$data[] = $row->name;
}
return $data;
//return mysql_query("select * from hotel_submits where name LIKE '".$searchterm."'");
}
答案 0 :(得分:3)
while
在技术上比foreach
更有效率,但不值得比较:在这种情况下,它们几乎完全相同。
答案 1 :(得分:1)
在您的情况下,查询返回的结果是数组。这意味着您可以使用foreach语句或while语句。
请注意,foreach语句针对使用数组进行了优化(从PHP5开始,对象也是如此),并且比while语句更快。虽然可以用来达到相同的效果,但它不是那么有效如果你想要通过数组的所有元素。
答案 2 :(得分:1)
当使用框架及其自定义数据库适配器类时,在脚本中间切换回PHP的内置函数似乎毫无意义。即使CI的适配器和PHP的mysql_*
函数可能使用相同的DBMS连接库(mysql)。
我强烈建议坚持Code Igniter的版本(foreach ($query->result() as $row)
)。从性能的角度来看,不应该有任何明显的差异。关于应用程序架构,不要混合访问接口肯定是很多更清洁。虽然它可能会有用,但它也可能会导致问题。
答案 3 :(得分:0)
看起来你混淆了mysqli和mysql语法。这两个库在内部不兼容。您不能在一个中使用句柄/语句,而在另一个中使用它。两个库都保持与数据库的完全独立的连接。
这意味着第一个将更快,因为mysql_fetch_array()将失败并且内部循环将永远不会运行。但更快并不意味着“正确”。