php - 使用 for 循环打印数组

标签 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 />";

      }
?>

最佳答案

您的困难在于您定义数组的方式:

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

php 中的数组实际上是 hashmaps;当您在上述数组上调用索引 5 时,它是未定义的。不会定义最多20个索引项,这些会被Notice out:

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";
}

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

关于php - 使用 for 循环打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15234955/

相关文章:

php - 在 laravel 中测试调度器

python - 编写一个对数字列表求和的自定义求和函数

c++ - "Debug"版 GCC 中 std::array 的绑定(bind)检查

ios - for循环Swift iOS的退出迭代

java - 将变量分配给 'For' 循环?

php - PDO 不会在错误的 SQL 查询上抛出异常

php - 通过传递每个链接的 session ID,将动态生成的链接链接到 php

PHP 魔术方法示例

javascript - Vue.js 总是从数组中删除最后一项

ruby - 如何在 Ruby 的时间序列中规范化和插入缺失值?