更简单的方法吗?

时间:2009-09-16 10:56:24

标签: php class

我有这段代码

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。

当我把它放到我的$数组中时,我需要对这个对象进行操作以使其变形。

3 个答案:

答案 0 :(得分:3)

你应该返回一个空数组而不是false,然后你可以通过foreach运行它,而不会产生PHP错误。您可以进一步使用$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;
}

答案 1 :(得分:2)

我可能会像你提议的那样做。

我会改变一件事:而不是:

array_push( $array , $ro );

我可能会使用:

$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;
}

答案 2 :(得分:-1)

$r = mysql_query("SELECT * FROM hobby ORDER BY hobby_name ASC");
return mysql_num_rows($r) > 0 ? return mysql_fetch_array($r) : false;