2013-02-05 3 views
2

Я довольно новичок в PHP и изучаю использование array_chunk(), чтобы разделить массив на три части, чтобы отобразить его как список из трех столбцов. Скажем, у меня есть массив как этотДоступ к каждому фрагменту array_chunk

$input_array = array('a', 'b', 'c', 'd', 'e', 'f'); 
$chunks = array_chunk($input_array, 3, true)); 

и я хочу выводить что-то вроде:

<div class="left"> 
<ul> 
    <li>a</li> 
    <li>b</li> 
</ul> 
</div> 

<div class="middle"> 
<ul> 
    <li>c</li> 
    <li>d</li> 
</ul> 
</div> 

<div class="right"> 
<ul> 
    <li>e</li> 
    <li>f</li> 
</ul> 
</div> 

Я видел некоторые really helpful examples здесь, но ни, что не показывают, как цикл по каждому элементу каждый кусок исходный массив, чтобы разместить там, где вам нужно, в html/css.

Это работа для array_slice? Но что, если мой массив динамически заполнен, и я не знаю, насколько он будет в данный момент?

Спасибо!

+0

Я неправильно читал документы и думал, что мое значение 3 означает 3 куска, но теперь вижу, что я был неправ. –

ответ

5
$div_class = array("left","middle","right"); 
$input_array = array('a', 'b', 'c', 'd', 'e', 'f'); 
$chunks = array_chunk($input_array, 2); 

foreach($chunks as $i => $mychunk) 
{ 
    echo "<div class=\"$div_class[$i]\">"; 
    echo "<ul>"; 

    foreach($mychunk as $newchunk) 
    { 
    echo "<li>"; 
    echo $newchunk; 
    echo "</li>"; 
    } 

    echo "</ul>"; 
    echo "</div>"; 
} 

Выход -

<div class="left"> 
<ul> 
<li>a</li> 
<li>b</li> 
</ul> 
</div> 
<div class="middle"> 
<ul> 
<li>c</li> 
<li>d</li> 
</ul> 
</div> 
<div class="right"> 
<ul> 
<li>e</li> 
<li>f</li> 
</ul> 
</div> 
+1

Вау! Мне нужно немного переварить, как это работает, но это так! –

+0

@ ErikBerger приятно видеть, что он работает для u :) +1 – swapnesh

1

Ваш array_chunk($input_array, 3, true)) код возвращает фрагмент с тремя значениями, но в соответствии с вашей продукции, что вы ожидали, вы должны установить array_chunk($input_array, 2, true)

следовать по ссылке, чтобы узнать больше о array_chunk()

$input_array = array('a', 'b', 'c', 'd', 'e', 'f'); 
$chunks = array_chunk($input_array, 2, true); 

//print_r($chunks); 
for($i=0;$i<count($chunks);$i++){ 
    echo "<div>\n"; 
    echo "<ul>\n"; 
    foreach($chunks[$i] as $k=>$v){ 

    echo "<li>$v</li>\n"; 

    } 
    echo "</ul>\n"; 
    echo "</div>\n\n"; 
} 

, чтобы увидеть результат проверьте следующую ссылку http://codepad.org/8K1luela

+0

это работает, за исключением того, что он не помещает каждый «кусок» в названный div (левый, средний, правый). Еще полезно! –

+0

@ ErikBerger рад, что это полезно для вас. –

Смежные вопросы