PHP:循环遍历数组并使用数组元素创建li列表 - 数组中的数组

时间:2011-02-24 10:41:13

标签: php

我有一个包含对象的数组:

Array ( [0] => 479,1,sometext [1] => 474,2,again text [2] => 472,3,and text ) 

数组中的对象可以是无限制的,但每个对象由逗号分隔的3个部分组成。

结果应该是(在我的例子中) - 其次是CORRECTED

<li>
<span class="somecrap">array[0][0]</span>
<input type="text" class="secondcrap" value="array[0][1]"/>
<textarea class="3crap">array[0][2]</textarea>
</li>
<li>
<span class="somecrap">array[1][0]</span>
<input type="text" class="secondcrap" value="array[1][1]"/>
<textarea class="3crap">array[1][2]</textarea>
</li>
<li>
<span class="somecrap">array[2][0]</span>
<input type="text" class="secondcrap" value="array[2][1]"/>
<textarea class="3crap">array[2][2]</textarea>
</li>

etc ....取决于数组对象的数量

你将如何实现这一目标?

4 个答案:

答案 0 :(得分:1)

试试这个:

foreach($array as $entry) {
    echo "<li>\n";
    $elements = explode(',', $entry, 3);
    echo "<span class='somecrap'>{$elements[0]}</span>\n";
    echo "<input type='text' class='secondcrap' value='{$elements[1]}'/>\n";
    echo "<textarea class='3crap'>{$elements[2]}</textarea>\n";
    echo "</li>\n";
}

已更新,以反映您编辑的要求。未经测试。

答案 1 :(得分:1)

foreach ($arr as $row) {
    echo '<li><span>', join('</span><span>', explode(',', $row, 3)), '</span></li>';
}

答案 2 :(得分:0)

<?php 
$array = //Your input
$fieldNames = array('crap', 'someCrap', '3rdCrap');

foreach ($array as $row) {
  $fields = explode(',', $row);
  echo "<li>";
  for($i = 0; $i < 3; ++$i) {
    echo "<span class='{$fieldNames[$i]}'>";
    if(isset($fields[$i]))
      echo $fields[$i];
    echo "</span>";
  }
  echo "</li>";
}
?>

^^为您的新要求编辑

答案 3 :(得分:0)

你的数组不是2D,它应该是这样的:

 Array (
   [0] => Array( [0] => 479, [1] => 1, [2] => sometext),
   [1] => Array([0] >= 474, [1] => 2, [2] => again text),
   [2] => Array([0] => 472, [1] => 3, [2] => and text)
  )

在那之后,这只是嵌套foreach的问题:

foreach($myArray as $level_one){
 echo '<li>';
 foreach($level_one as $item){
   echo '<span>' . $item . '</span>';
 }
 echo '</li>';
}