我想将此数组打印到所有索引直到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中的数组实际上是哈希表.当您在上面的数组上调用索引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";
}
请注意,这不是一个干净的解决方案.
标签:for-loop,arrays,php 来源: https://codeday.me/bug/20191031/1973738.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。