Bir multi-dim dizi daha verimli erişim

2 Cevap php

Ben (Kohana v2.3.4) ile güzel çıkış bir veri dizisi çalışıyorum, ve bunu yapmak için daha verimli ve zarif bir şekilde olması zorunludur düşünüyorum. Benim dizi bu gibi görünüyor:

array('category_id' => value, 'category_title' => value, 'posts' => array( 'id' => value, 'title' => value, ... ))


Ve burada (bazı dizi değerler basitlik uğruna bu örnekte çıkarılmıştır) benim görünümünde çıkış kulüpler nasıl:

foreach($data as $d) {
    echo '<h3>'.$d['category_title'].'</h3>';
    foreach($d['posts'][0] as $p) {
    	echo '<p>'.$p['title'].$p['id'].'</p>';
    }
}

Ben dizi ile bu konuda gitmek için daha iyi bir yolu var mı?

2 Cevap

Sen iç içe döngü kullanarak kaçamıyorum (sürece array_walk vb kullanırsanız) ancak değişken değişimi yararlanarak dize birleştirme çok kullanmadan yapmak yapabilirsiniz:

foreach($data as $d) {
    echo "<h3>{$d['category_title']}</h3>";
    foreach($d_posts[0] as $p) {
        echo "<p>{$p['title']} {$p['id']}</p>";
    }
}

Ayrıca temizleyici dizeleri için ekstraktı () ile birleştirebilirsiniz:

foreach($data as $d) {
    extract($d, EXTR_PREFIX_ALL, 'd_');
    echo "<h3>$d_category_title</h3>";
    foreach($d_posts[0] as $p) {
        extract($p, EXTR_PREFIX_ALL, 'p_');
        echo "<p>$p_title $p_id</p>";
    }
}

Dışında küçük bir hatadan kaynaklanıyor:

foreach ($data as $d) {
  echo '<h3>'.$d['category_title'].'</h3>';
  foreach($d['posts'] as $p) {
    echo '<p>'.$p['title'].$p['id'].'</p>';
  }
}

hayır yok.

Bunun için iç içe döngü ile sorun nedir?