如何在php脚本中使用两次数组

时间:2015-02-27 00:34:53

标签: php arrays

我正在编写一个脚本,并希望使用一个名为$ states的数组两次。 $states是一个包含50个状态列表的数组。

我正在使用下面的代码段来显示结果。如果我只使用带有class="table-responsive"的div,它可以正常工作和显示。如果我只使用带有class="container"的div本身,它也会正确显示结果。

但是,当我尝试同时使用两者时,即一个跟随另一个,第一个工作,第二个不显示或最多显示数组中的最后一个结果。我试过重置数组,但似乎没有任何工作。

我做错了什么?任何帮助,将不胜感激。感谢。

<div class="table-responsive" id="defaultview">

    <table  class="table"  width="100%"  border="0" cellspacing="0" cellpadding="0">
    <? array_shift($states);
    $rows3 = array_chunk($states, 2);
    foreach ($rows3 as $states) { ?>
    <tr>
    <? foreach($states as $state){ ?>

    <td><a href="/search.php?state=<?=$state['state']?>" title="<?=$state['state']?>">
    <?=$state['state']?>
    </a></td>
    <? } ?>
      </tr>
      <? }?>
    </table>

</div><!-- /End #state -->



<div class="container" id="smallview" style="padding-left: 1px;"> 
    <ul class="list-group">

    <? 
    reset($states);
    array_shift($states);
    foreach($states as $state)
    { ?>
    <li class="list-group-item"><a href="/search.php?state=<?=$state['state']?>" title="<?=$state['state']?>">
     <?=$state['state']?>
     </a></li>
     <? } ?>


     </ul>
 </div><!-- /End #state -->

1 个答案:

答案 0 :(得分:1)

问题在于:

array_shift($states);
$rows3 = array_chunk($states, 2);
foreach ($rows3 as $states) {
//                 ^^^^^^^

此时,您将覆盖原始的$states数组;如果原始数组有一个奇数个元素,比如49,那么在循环结束时你现在只有一个元素的$states数组。

进一步在代码中:

reset($states);
array_shift($states);

array_shift()之后,数组现在将为空。