Çok boyutlu dizi sayesinde PHP foreach döngü

3 Cevap php

Ben bir dizi var:

$arr_nav = array( array( "id" => "apple", 
    	  "url" => "apple.html",
    	  "name" => "My Apple" 
    	),
    	array( "id" => "orange", 
    	  "url" => "orange/oranges.html",
    	  "name" => "View All Oranges",
    	),
    	array( "id" => "pear", 
    	  "url" => "pear.html",
    	  "name" => "A Pear"
    	)		
 );

Ben sadece bana sayısını ayarlamanızı sağlar (değiştirmek için bir foreach döngüsü kullanmak istiyorum Hangi:

for ($row = 0; $row < 5; $row++)

a .first görüntülemek ve ilgili dizi değerleri için .last class yeteneği ile

Edit

Ben yankılandı edilecek verileri istiyorum:

<li id="' . $arr_nav[$row]["id"] . '"><a href="' . $v_url_root . $arr_nav[$row]["url"] . '" title="' . $arr_nav[$row]["name"] . '">"' . $arr_nav[$row]["name"] . '</a></li>' . "\r\n";

Hızlı yanıt için çok teşekkürler. StackOverflow kayalar!

3 Cevap

Eğer a.first ve a.last bahsediyoruz dizinin ilk ve son giriş demek, bu gibi gider:

foreach ($arr_nav as $inner_array) {
    echo reset($inner_array); //apple, orange, pear
    echo end($inner_array); //My Apple, View All Oranges, A Pear
}

PHP diziler size reset, next, end ile işleyebilirsiniz bir iç işaretçisi var. Tuşları / değerleri alınıyor key ve current ile çalışır, fakat each birçok durumda daha iyi olabilir ..

<?php
$php_multi_array = array("lang"=>"PHP", "type"=>array("c_type"=>"MULTI", "p_type"=>"ARRAY"));

//Iterate through an array declared above

foreach($php_multi_array as $key => $value)
{
    if (!is_array($value))
    {
        echo $key ." => ". $value ."\r\n" ;
    }
    else
    {
       echo $key ." => array( \r\n";

       foreach ($value as $key2 => $value2)
       {
           echo "\t". $key2 ." => ". $value2 ."\r\n";
       }

       echo ")";
    }
}
?>

OUTPUT:

lang => PHP
type => array( 
    c_type => MULTI
    p_type => ARRAY
)

Reference Source Code

<?php
$first = reset($arr_nav); // Get the first element
$last  = end($arr_nav);   // Get the last element
// Ensure that we have a first element and that it's an array
if(is_array($first)) { 
   $first['class'] = 'first';
}
// Ensure we have a last element and that it differs from the first
if(is_array($last) && $last !== $first) {
   $last['class'] = 'last';
}

Şimdi sadece html-jeneratör içinizde sınıf yankı olabilir. Muhtemelen sınıf ayarlanmış olduğundan emin olun, ya da diziye bir varsayılan boş sınıf sağlamak için kontrol çeşit gerekir.