PHP nasıl bir liste veya nesnelerin bir dizi oluşturabilirim?

2 Cevap

Ben bir. Net programcısı fi & duyuyorum c # ama php bir liste veya diziye benim nesneleri almak için nasıl anlamaya görünüyor olamaz.

var mylist = new List<myobject>();

mylist.add(myobject1);
mylist.add(myobject2);

ben denedim ne. Ürünler OrderItems bir koleksiyon için bir özellik olan

$this->Products = getOrderItems();

public function getOrderItems()
{
    $items = array();
    $count = 0;

      // connect to db, query.....

    while($row = mysql_fetch_array($result, MYSQL_BOTH)){
    	$count++;
    	$items[$count] = ($row);
    }
    echo 'Count of Order Items...' . $count;

    return $items;
}

I hatta yakın mıyım?

2 Cevap

  • $this->Products = getOrderItems(); is legal in PHP, but it refers to the (global) function getOrderItems() instead of the class method. class methods and variables always have to be prefixed with $this-> (or self::, if they're static vars) when called from inside the class.
    in your sample-code, you have that wrong. getOrderItems is defined as class method, but your call is not $this->-scoped, thus php assumes a function. it should throw an function not found-error.

  • [] notasyonu bir dizinin sonuna bir öğe ekler.

  • Sizin örnek kodda ilk öğenin indeks 1 (olmadığını VB için standart vaka?). php normalde 0'dan başlar - (php-diziler gerçek diziler değil çünkü) o keyfi endekslerine başlamak mümkün olsa ben sıfır sopa ile tavsiye ederim.

  • mysql_fetch_array mysql ile çalışan bir ancient yoludur. günümüzde mysqli'nin veya (daha iyi) PDO ile daha iyi konum.

  • Php (...) Bir liste veya dizi.

    listeler, diziler, yığınlar, ne olursa olsun: php everthing (yanıltıcı dizi denir) sıralı bir harita:

    PHP: Arrays: PHP'de bir dizi aslında sıralı bir harita. Bir harita değerleri anahtarlarla ilişkilendiren bir türüdür. Bu tür birkaç farklı kullanımlar için optimize edilmiştir; bir dizi listesi (vektör), karma tablo (bir harita bir uygulama) olarak tedavi edilebilir, sözlük, toplama, yığın, kuyruk, ve muhtemelen daha fazla. Dizi değerleri olabilir gibi diğer diziler, ağaçlar ve çok boyutlu diziler de mümkündür.

update:

Üzgünüm, i pdo / mysqli üzerinde ince nüansları açıklamak için şu anda yeterli zaman yok mysql.

bu nedenle burada sadece temel bilgiler şunlardır:

  • oop: PDO ve mysqli nesne odaklı (sert mysqli fonksiyonel takma ismi var)

  • prep statements: en önemli: pdo / mysqli hazırlanmış deyimleri var. yani önce bir kez, sonra (sorgu ikinci kez hazırlamak için gerek olmadan) daha sonra değerleri doldurmak tutucular ile sorgu hazırlamak anlamına gelir. Bu yaklaşım, 3 belirgin avantajları vardır:

    • Veritabanı sadece analiz derlemek ve bir kez (at least with complex queries) sorgu optimize etmek için vardır, çünkü performance: o, daha hızlı

    • Alıntı dizeleri için security: gerek yok (otomatik olur!), Sert sql-injection saldırıları yapma

    • maintainability: sorgu mantığı ve veri parçası, okumak böylece daha kolay ayrılır ve dize concenation bir sürü yapmak zorunda değilsiniz

  • driver driven: pdo veritabanı belirli değildir. birkaç desteklenen db-sistemleri noktasına daha kolay hale vardır sizin (but it's not an db-abstraction layer like ODBC, so the SQL still has to be compatible) diğer db-backendleri için kod ve artan tekrar kullanılabilirliği

tabii ki, ona bir şey daha var

Ne yayınlanmıştır orlandu63 doğru - kullanarak $items[] = $row $ satır $ öğelerin sonraki elemanına sayısal olarak eklenir demektir.

Başka bir seçenek bir id alanı $ satırda varsa, sizin dizi indeksleme ve kolay verilen bir öğeyi bulmak için yapma avantajına sahip olan, $items[$row->id] = $row; yapabiliyor olmasıdır.

Gerçekten seninle PHP dizilerle verir serin bazı şeyleri açıklayacağım ki, http://www.php.net/manual/en/language.types.array.php ile okumanızı öneririz.