Bunu yapmanın kolay bir yolu?

2 Cevap php

Bu kodu vardır

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

Bunu yapmanın daha kolay bir yolu olup olmadığını ve merak ediyorum?

Bu kod ilk olarak, tüm veritabanı üzerinden anarray içine iter alır, onun sayısını kontrol eder ve dizi veya false döndürür.

Ben $ diziye olsun ben PASE bu nesneye foreach yapmak gerekir.

2 Cevap

Daha sonra PHP bir hata oluşturmadan foreach aracılığıyla çalıştırabilirsiniz, false yerine, boş bir dizi döndürür. Eğer daha fazla kullanmak $array[] = yerine array_push() yapabilirsiniz:

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

Eğer önerilen gibi Muhtemelen bir şey yapmak istiyorum.

Bir şey değiştirmek istiyorum: bunun yerine:

array_push( $array , $ro );

Ben kullanımını probaly olacaktır:

$array[] = $ro;

Bu durumda işe yaramaz görünen bir işlev çağrısı, (her iki sözdizimi aynı yapmalıdır) önlemek için.


Also, I would always return an array : the function is called "getList", so, in my opinion, it should return... a list.

Hiçbir unsur olduğunda bile, (yani, boş array) boş bir liste dönmek gerekir, ve bir boolean false.

Bu aynı zamanda sadece içerdiği eleman sayısını saymak zorunda değil, senin $ dizi dönmek anlamına gelir; bu yüzden, ben böyle bir şey ile sona erecekti varsayalım:

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