(PHP) sınıf nesneleri aracılığıyla depolamak ve aramak için en iyi yolu nedir?

3 Cevap php

Ben bu sınıfın yaklaşık 80 örneklerini Ürünleri aradım ve verimli bir şekilde kendi kimlik veya ADI tarafından nesneleri aramak istiyorum.

<?php
class Item
{
    public $id;
    public $name;

   //methods
}
?>

Ben PHP5 kullanıyorum.

3 Cevap

Hiçbir yinelenen adları veya kimlikleri varsayarak:

$ids = array();
$names = array();
foreach ($items as $item) {
  $ids[$item->id] = $item;
  $names[$item->name] = $item;
}

Eğer (isimleri, ben hiçbir yinelenen kimlikleri tanım gereği vardır hayal) çoğaltmaları varsa o zaman bu işlemek için nasıl çalışmak gerekir. Sen tek bir tuşu altında bulunan tüm çiftleri depolamak (yani değer maçları bir dizi olur).

Ya da daha sofistike bir arama demek? Eğer öyleyse, basit bir varyant bir diziye öğe kelime ve / veya ifadeler içine adını ve sonra buna endeksi onları kırmak için olabilir.

Ben bir ItemIndex sınıf yapma düşünmek istiyorum;

this would allow you to maintain an arbitrary number of independent indexes, overloading the comparison and search functions as appropriate.

80 örnekleri varsa, bu gerçekten kullandığınız hangi seçeneği farketmez. Arama N karesi bile, ben burada bir performans optimizasyonu içine zaman yatırım yapmaya değer olduğunu sanmıyorum. Basit şey ve sonra profil yapmak; bu korkunç olursa, ancak o zaman daha hızlı yapmak için uygulama karmaşıklığı artan düşünün.