Nasıl daha gelişmiş bir dizi var mı?

4 Cevap php

Temelde ben şu anda öyle gibi bir diziye değerler bir sürü koyun:

$flavors = array('Original','Cherry','Chocolate','Raspberry','Mango');

ve bundan ben şöyle bir foreach yürütmek olabilir:

    foreach($flavors as $flav) {

	echo doSomething($flav);

}

Ben belki doSomething () içine 2 değişkenleri koymak benim öğrenme sonraki aşamaya gelinceye kadar bu tüm bir tedavi çalışır.

Örneğin, ben Kiraz EG maddeler eklemek istediğiniz söylüyorlar

 echo doSomething($flav, $ingredient_of_this_flav);

Bunu hakkında gitmek için herhangi bir yol olup olmadığını ... benim tuşları yukarıda değerlerini kullanmak nerede tamamen ikinci bir dizi gerekebilir hayal emin değilim? ör

$ingredients = array('Original' => 'boring stuff', 'Cherry' => 'cherries and other stuff') etc

Ve sonra şöyle) (DoSomething olur

    foreach($flavors as $flav) {

	echo doSomething($flav, $ingredients[$flav]);

}

Ben şimdi bu deneyin gitmek gerekir herhalde. Bu iyi bir yaklaşım mı ya da bu konuda gitmek için daha iyi bir yolu var mı? İdeal sadece bir dizi $ tatlar ve $ maddeler ayarlamak zorunda değil olurdu.

Zaman ayırdığınız için teşekkürler.

4 Cevap

Bir dizinin anahtarları ve değerler üzerinde foreach yapabilirsiniz.

   foreach ($ingredients as $flav => $ingredients) 
   {
       echo doSomething($flav, $ingredients);
   }

Fark ettik gibi php diziler, ilişkisel vardır. Eğer doğru anlamak ve her anahtar / değer çifti döngü sözdizimi arıyoruz?

foreach($ingredients as $flav => $ingredient) {
  echo doSomething($flag, $ingredient);
}

Bu sizin için ne arıyorsanız?

Eğer nesneleri içine bakmak isteyebilirsiniz daha her anahtar için karmaşık değerler, ya da daha acımasız sürümü, diziler diziler var arıyorsanız.

$ingredients = array('Cherry' => array('Cherries', 'Other stuff'));

Ve $ingredient Yukarıdaki döngü içinde bir dizi olacak.

Ben bir lezzet => maddeler yaklaşımı ile ilişkilendirilebilir bir dizi (aka hash tablo) kullanmak istiyorsunuz. Böyle bir şey:

$flavors = array ('Cherry' => array('stuff1', 'stuff2'), 
                  'Mango' => array('stuff1', 'stuff3'));

echo $flavors['Cherry'][0]; // stuff1

foreach($flavors as $flavor => $ingredients)
{
  print $flavor;
  // $ingredients is an array so we need to loop through it
  foreach($ingredients as $ingredient)
  {
    print $ingredient;
  }
}

Bu iç içe geçmiş bir döngü olarak bilinen ve lezzet ve her madde basacaktır.

Neredeyse vardır. Ben gibi bir şey olmak için dizi ayarlamak olacaktır:

$ingredients = array('Original' => array('boring stuff', 'boring stuff2'), 'Cherry' => array('cherries', 'other stuff'));

Sonra döngü olarak aşağıdaki gibidir:

foreach($flavors as $flav => $ingredient) {

        echo doSomething($flav, $ingredient);

}

Tabii ki, tüm ") (doSomething" sen ne bağlıdır