Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用for循环打印数组_Php_Arrays_For Loop - Fatal编程技术网

Php 使用for循环打印数组

Php 使用for循环打印数组,php,arrays,for-loop,Php,Arrays,For Loop,我想将此数组打印到所有索引(最多21个),但在这段代码中,这只是打印到数组长度,我应该如何在for loop中打印整个数组 <?php $array=array(0=>"hello", 1=>"world", 2=>"this", 3=>"is", 4=>"an", 20=>"array",

我想将此数组打印到所有索引(最多21个),但在这段代码中,这只是打印到数组长度,我应该如何在for loop中打印整个数组

<?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 />";

      }
?>

foreach($key=>value的数组){
echo$key.“=>”$value;
回声“
”; }
您希望以$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 />";

          }
    ?>

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

$array=array(0=>"hello",
             1=>"world", 
             2=>"this", 
             3=>"is", 
             4=>"an", 
             20=>"array",
             21=>"code" );
php中的数组实际上是哈希映射;在上面的数组上调用index
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]
时,它将返回“array”

您真正想要的是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";
}
$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>";
    }
}
$key\u array=array\u key($array);

对于带有for循环的($i=0;$i解决方案:

$key_array = array_keys($array);
for($i=0;$i<count($key_array);$i++){
   $key = $key_array[$i];
   echo "$key => ".$array[$key]."\n";
}
$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>";
    }
}
$array=array(0=>“你好”,
1=>“世界”,
2=>“这个”,
3=>“是”,
4=>“安”,
20=>“数组”,
21=>“代码”);
$max=max(array_flip($array));//如果max array key是10^5怎么办?


对于($i=0;$i为什么不
$i将此
更改为($i=1;$iIt应该是
$i<$length
,而不是
$i然后每次插入一个元素时,我都必须更改长度,这就是问题所在。我非常好奇;为什么不能使用foreach循环?对不起,我在for循环中提到了。啊,对不起。为什么只有for循环而不是foreach?我想知道是否有方法打印for循环?但是它仍然不会打印索引20和21。此代码不起作用:当它尝试访问“5”时,您将得到一个数组索引越界异常,而“5”在该数组中不存在。是的,那个问题,Nathaniel,我想打印整个数组而不获得它。为什么它必须是for循环?Foreach不可能?有人特别要求我不要o使用for循环。我特别要求使用for循环。编辑了一个显式的for loop.thanx,Nathaniel就可以了。@NathanielFord+1表示数组_keys()解决方案,这是我的一个想法!请注意,如果您的数组很大,这里的海报有一个非常突出的点;性能影响可能是有意义的。此解决方案检查0和…之间的所有可能键。例如,请查看字母“a”在哈希映射中的位置。@NathanielFord是的,您完全正确,但是SO希望这样做:p但是有更干净的方法可以做到这一点;您可以获取数组中的所有键,只需迭代这些键,而不是迭代所有可能的键:如果web应用程序在获取数组中的“a”之前必须搜索每个数字索引,这种编程可能会很快杀死它。@user211306如果采用纳撒尼尔·福特的解决方案,效率会更高!@HamZaDzCyberDeV,好的,我会选择的!