@ Стефен, ты прав, но немного проверь, если ($ value [0]), if ($ value [1]) может решить эту проблему, но опять же я согласен, что это не лучший способ сделать это, я сам несколько способов сделать это, думая об этом сейчас, но в то время, когда я ответил, вот что пришло мне в голову ...

я есть массивarray ( [0] => array(1,2,3,4,5) [1] => array(6,7,8,9,10)) и я хотел бы отобразить это так:

<ul>
  <li>
     <a href=""/>FIRST ELEMENT OF THE array ==> 1</a>
     <a href=""/>2ND ELEMENT OF THE TAB ==> 2</a>
     <a href=""/>3THIRD ELEMENT==> 3</a>
     <a href=""/>FORTH ELEMENT OF THE TAB ==> 4</a>
     <a href=""/>FIFTH ELEMENT==> 5</a>
 </li>
 <li>
     <a href=""/>6th ELEMENT==> 6</a>
     <a href=""/>7th ELEMENT OF THE TAB ==> 7</a>
     <a href=""/>8th ELEMENT==> 8</a>
     <a href=""/>9th ELEMENT OF THE TAB ==> 9</a>
     <a href=""/>10th ELEMENT OF THE TAB ==> 9</a>
 </li>


</ul>

Как я могу добиться этого в PHP? Я думаю о создании подмассива сarray_slice.

 please delete me10 янв. 2011 г., 15:25
Вы можете вставить PHP-код массива?
 Stephen10 янв. 2011 г., 17:14
Ваши требования просто полностью изменились ... Вы не должны тратить наше время на то, чтобы найти решение проблемы, если вы не собираетесь предоставлять нам все факты. Потратьте время, чтобы объяснить вещи правильно с первого раза.
 Alex Pliutau10 янв. 2011 г., 15:27
Это неверно<a href=""/>, Так должно быть<a href="">

Ответы на вопрос(5)

Обновлено, чтобы учесть вашифактический структура массива

Ваше решение - это простой вложенный foreach.

$tab = array(array(1,2,3,4,5), array(6,7,8,9,10));
echo '<ul>';
foreach ($tab as $chunks) {
    echo '<li>';
    foreach($chunks as $chunk) {
        echo '<a href="">' . $chunk . '</a>';
    }
    echo '</li>';
}
echo '</ul>';
 Stephen10 янв. 2011 г., 17:17
Удален кусок массива после того, как OP изменил требования.
 nikc.org10 янв. 2011 г., 15:53
+1 заarray_chunk.

попробуй это:

$sections = array_chunk(array(1,2,3,4,5,6,7,8,9,10), 2);

echo '<ul>';

foreach($sections as $value)
{
 echo '<li>';
 echo '<a href=""/>'.$value[0].' ELEMENT OF THE TAB ==>  '.$value[0].'</a>';
 echo '<a href=""/>'.$value[1].' ELEMENT OF THE TAB ==>  '.$value[1].'</a>';
 echo '</li>';
}

echo '</ul>';
 Stephen10 янв. 2011 г., 15:59
array_chunk это определенно путь, но неравномерное количество элементов в исходном массиве вызовет ошибку.
 bharath10 янв. 2011 г., 16:23
@ Стефен, ты прав, но немного проверь, если ($ value [0]), if ($ value [1]) может решить эту проблему, но опять же я согласен, что это не лучший способ сделать это, я сам несколько способов сделать это, думая об этом сейчас, но в то время, когда я ответил, вот что пришло мне в голову ...
Решение Вопроса

пытаться

echo "<ul>";
$i=0;
$theCount = count($tab);
while($i<$theCount){
    echo "<li>";
    echo "  <a href=""/>FIRST ELEMENT OF THE TAB ==> {$tab[$i]}</a>";
    $i++;
    echo "  <a href=""/>FIRST ELEMENT OF THE TAB ==> {$tab[$i]}</a>";
    echo "</li>";
    $i++;
}
echo "</ul>";
 Stephen10 янв. 2011 г., 15:57
Это пересчитывает массив на каждой итерации. Вы должны изолировать счет.
 Stephen10 янв. 2011 г., 16:01
Это не ошибка, просто хорошая привычка.
 Nanne10 янв. 2011 г., 15:29
Обратите внимание, что @nikc, размещенный ниже, действительно применяется: это действительно только для четного количества элементов Легко - если некрасиво - исправить, это перейти к count () - 1, а затем сделать проверку, если вам нужно напечатать еще 1.
 Nanne10 янв. 2011 г., 16:09
Точка взята, точка взята, но можно утверждать, что это для ясности потока для понимания .... ауки, неважно;)
 Nanne10 янв. 2011 г., 16:00
Да, как академическое ускорение, но я вряд ли думаю, что вопрос задаст такую ​​оптимизацию. тем не менее, я исправлю «ошибку» :)
<?php
for($i = 0 ; $i < count($tab) ; $i += 2) {
    echo "<a href>" . $tab[$i] . "</a>";
    echo "<a href>" . $tab[$i+1] . "</a>";
}
?>

 Stephen10 янв. 2011 г., 15:57
Это пересчитывает массив на каждой итерации. Было бы лучше кешировать это значение.
 nikc.org10 янв. 2011 г., 15:25
Это будет работать до тех пор, пока в массиве всегда будет четное количество элементов. Нечетное число вызовет переполнение индекса.

Вот еще один способ сделать это (демоВот):

<?php
$tab = array(1,2,3,4,5,6,7,8,9,10);

//how many <a> elements per <li>
$aElements = 2;    

$totalElems = count($tab);    

//open the list
echo "<ul><li>";

for($i=0;$i<$totalElems;$i++){

    if($i != 0 && ($i%$aElements) == 0){ //check if I'm in the nTh element.
        echo "</li><li>"; //if so, close curr <li> and open another <li> element
    }

    //print <a> elem inside the <li>
    echo "<a href =''>".$tab[$i]."</a>";
}

//close the list
echo "</li></ul>";

?>

Объяснение подсказки: $ i% n (mod) равно 0, когда $ i является элементом nTh (остаток от деления равен 0)

РЕДАКТИРОВАНИЕ: принято общее решение

 Stephen10 янв. 2011 г., 15:49
Я думаю, что вы должны перевернуть это условие и поставить блок, содержащий закрытие / открытиеli элементы в первую очередь. Это будет выглядеть проще для чтения.
 stecb10 янв. 2011 г., 15:52
@ Стефан, ты прав! :) Спасибо

Ваш ответ на вопрос