使用for循环打印数组

时间:2013-03-05 21:58:21

标签: php arrays for-loop

我想将这个数组打印到21以下的所有索引,但是在这段代码中,这只打印到数组长度,我应该在 for循环中打印整个数组?

<?php
$array=array(0=>"hello",
             1=>"world", 
             2=>"this", 
             3=>"is", 
             4=>"an", 
             20=>"array",
             21=>"code" );

$length=count($array);

for($i=0;$i<$length;$i++){
         echo "$i=>".$array[$i]; 
         echo "<br />";

      }
?>

4 个答案:

答案 0 :(得分:2)

你的困难在于你定义阵列的方式:

$array=array(0=>"hello",
             1=>"world", 
             2=>"this", 
             3=>"is", 
             4=>"an", 
             20=>"array",
             21=>"code" );

php中的数组实际上是一个哈希映射;当您在上面的数组上调用索引5时,它是未定义的。不会定义最多20个索引项,这些将注意到:

PHP Notice:  Undefined offset:  5

因为您使用数组长度作为迭代变量,并且正好调用该变量,所以您的代码中永远不会获得位置20和21。

这就是你的数组在计算机上的样子:

0 => "hello"
1 => "world"
2 => "this"
3 => "is"
4 => "an"
5 => NULL
6 => NULL
7 => NULL
... //elided for succinctness 
19 => NULL
20 => "array"
21 => "code"

当你致电$array[7]时,它无法返回任何内容。当你致电$array[20]时,它会返回“数组”。

你真正想要的是一个foreach循环:

foreach($array as $key => $val) {
    //key will be one of { 0..4, 20..21}
    echo "$key is $value\n";
}

导致:

$ php test.php 
0 is hello
1 is world
2 is this
3 is is
4 is an
20 is array
21 is code

如果必须使用for循环:

$key_array = array_keys($array);
for($i=0;$i<count($key_array);$i++){
   $key = $key_array[$i];
   echo "$key => ".$array[$key]."\n";
}

请注意,这不是一个干净的解决方案。

答案 1 :(得分:2)

使用for循环的解决方案:

$array=array(0=>"hello",
             1=>"world", 
             2=>"this", 
             3=>"is", 
             4=>"an", 
             20=>"array",
             21=>"code" );

$max = max(array_flip($array)); // What if max array key is 10^5 ?
for($i=0;$i<=$max;$i++){
    if(isset($array[$i])){
        echo "$i=>".$array[$i]."<br>";
    }
}

答案 2 :(得分:1)

foreach($array as $key=>$value){
    echo $key."=>".$value; 
    echo "<br />";
}

答案 3 :(得分:-1)

你想用$ i = 0开始循环,因为PHP使用零索引。同样在你的循环中你想要在$ i上限制你的最大值

  <?php
    $array=array(0=>"hello",
                 1=>"world", 
                 2=>"this", 
                 3=>"is", 
                 4=>"an", 
                 20=>"array",
                 21=>"code" );

    $length=count($array);

    for($i=0;$i<$length;$i++){
             echo "$i=>".$array[$i]; 
             echo "<br />";

          }
    ?>