Soru özetleri üreten PHP çok boyutlu diziler

2 Cevap php

Bu sorunun amacı, PHP çokboyutlu dışarı veri yazdırmak için en iyi yolu bulmak için.

How can you complete the following procedure below?

Ben following arrays

array1['id']['title']

ve

array2['id']['tags'][]

The arrays have been generated by the function pg_fetch_array. This allows you refer to each value of element by its name or by its key.

Procedure to get the titles for questions ve their tags

Ben aşağıdakileri yapmak istiyorum

  1. First loop
    1. array1[$question_id] adlı başlık yazdırma
    2. Verilen question_id için array2[$question_id][] tüm etiketler yazdırma
  2. Second loop
    1. listedeki bir sonraki question_id için 1.1 'de olduğu gibi aynı şeyi
    2. do the same as in 1.2 for the next question_id in the list ...
  3. Listedeki tüm $ question_ids için bu devam

Ben prosedürü tamamlamak için başarısız çeşitli yöntemler kullanmışlardır

  1. to create a multidimensional array such that I can iterate though all items in a singe -foreach: merge_unique burada yeterli değildir. Diğer birleştirmelerinin de ben istemiyorum bir sütun kaldırmak.
  2. to solve the problem with the two given arrays by while ve foreach -sentences: I get 9 iterations for 3 questions as I have a foreach -clause inside a while -loop

2 Cevap

Foreword:, aşağıdaki örneklerden herhangi biri beklenen sonucu verecektir. Eğer sayfa aşağı gitmek gibi onlar sadece daha karmaşık olsun, ve her biri kendi yararları vardır.

İlk olarak, fonksiyonun özeldir. Sen dizi1 döngü ve başlık çıktı. Sonra gidip biz şu anda her değer döngü, bakıyorsun biri olarak aynı kimliğe dizi2 gelen dizi kapmak, ve değerini yazdırmak.

foreach($array1 as $id => $sub_array)
{
    echo $sub_array['title'];
    foreach($array2[$id]['tags'] as $tag)
    {
        echo $tag;
    }
}


Şimdi daha net bir küçük biri için:

 // Go through each question in the first array
 // ---$sub_array contains the array with the 'title' key
 foreach($array1 as $id => $sub_array)
 {
     // Grab the title for the first array
     $title = $sub_array['title'];

     // Grab the tags for the question from the second array
     // ---$tags now contains the tag array from $array2
     $tags = $array2[$id]['tags'];

     // 1.1 Print the Title
     echo $title;

     // 1.2 Go through each tag
     foreach($tags as $tag)
     {
         echo $tag;
     }
 }

Bu ihtiyacı biraz daha fazla şeyler yapar, ancak ilave adımlar daha net yapmak.


Ve ben işler daha da karmaşık hale seviyorum diye, sen fonksiyonları Başlık / Etiket Oluşturma işlemek, ve aynı zamanda daha az hayal kırıklığı demektir foreach döngü, daha az karmaşa yaratacak sağlayarak daha iyi ayrı şeyi yapamadım.

// Go through each question in the first array
foreach($array1 as $id => $sub_array)
{
    // Grab the title for the first array
    $title = $sub_array['title'];

    // Grab the tags for the question from the second array
    $tags = $array2[$id]['tags'];

    // 1.1 Print the Title & 1.2 Print the Tags
    create_question($title, $tags);
}

// Functions

// Create all the parts of a question.
function create_question($title, $tags)
{
    create_title($title);
    create_tags($tags);
}

// Print the Title
function create_title($title)
{
    echo $title;
}

// Loop Through Each Tag and Print it
function create_tags($tags)
{
    echo "<ul>";
    foreach($tags as $tag)
    {
        echo "<li>".$tag."</li>";
    }
    echo "</ul>";
}

Ben somethnig Burada eksik eminim, ama ...

foreach($array1 as $id => $title) {
  echo $title['title'];
  foreach($array2[$id]['tags'] as $tag) {
    echo $tag;
  }
}