2009-09-16 89 views
1

我有这样的代码更简单的方法呢?

public function getList() 
{ 
    $array = array(); 

    $r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 
    while($ro = mysql_fetch_object($r)) 
    { 
     array_push($array , $ro); 
    } 

    if (count($array) > 0) 
     return $array; 
    else 
     return false; 
} 

,并想知道是否有这样做的更简单的方法?

该代码首先将所有数据从数据库中取出,将其推入数组中,检查其数量并返回数组或返回false。

当我把它放到我的$数组中时,我需要对这个对象进行foreach来处理它。

回答

3

您应该返回一个空数组,而不是假的,那么你可以不PHP产生错误的foreach通过运行它。您可以进一步使用$array[] =代替array_push()

public function getList() 
{ 
    $array = array(); 

    $r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 

    while($ro = mysql_fetch_object($r)) 
    { 
      $array[] = $ro; 
    } 
    return $array; 
} 
2

我可能会做你喜欢的建议。

有一件事我会改变:不是这样的:

array_push($array , $ro); 

我会probaly使用:

$array[] = $ro; 

为了避免函数调用,这似乎无用在这种情况下(包括语法应该做的一样)。另外,我总是会返回一个数组:这个函数被称为“getList”,所以,在我看来,它应该返回一个列表。

即使没有元素,它应该返回一个空列表(即,空array),而不是布尔false

这也意味着你可以返回你的$数组,而不必计算它包含的元素的数量;所以,我想我最终会是这样的:

public function getList() 
{ 
    $array = array(); 
    $r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 
    while($ro = mysql_fetch_object($r)) 
    { 
    $array[] = $ro; 
    } 
    return $array; 
} 
-1
$r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC"); 
return mysql_num_rows($r) > 0 ? return mysql_fetch_array($r) : false; 
+0

NOOOO。这是**可怕的**。 – Fragsworth 2009-09-16 11:09:10

+0

也许我错了,但是,用这个函数只会返回1行作为数组,而不是作为对象的所有行的数组;还有,在?中返回两次:看起来很奇怪(它实际上显然会给你一个分析错误:语法错误,意外的T_RETURN) – 2009-09-16 11:09:29