阵列PHP的foreach循环

问题描述:

考虑以下阵列阵列PHP的foreach循环

$arr1=array('a'=>2,'b'=>22,'c'=>4,'d'=>10) 

现在,

print_r(array_keys($arr1)); 

输出

Array ([0] => a [1] => b [2] => c [3] => d) 

很好,因为array_keys的返回类型为数组。 甚至echo array_keys($arr1);给出Array作为输出。

但是,对于

foreach(array_keys($arr1) as $key) 
{ 
    echo $key.'<br/>'; 
    } 

输出abcd有人能解释如何foreach在这里工作,我期待下面的输出

[a] => 2 
[b] => 22 
[c] => 4 
[d] => 10 

不想要一个更好的代码,以显示我的预期的输出。只是想知道在这种情况下foreach是如何循环的。

+0

你的'echo'是'$ key'和HTML断行?你可以用foreach($ array as $ key => $ value)在循环中获得key **和**值,然后输出。可能会有点太多,但也许看看[这个问题](http://*.com/questions/10057671/how-foreach-actually-works?rq=1)。 – 2013-04-24 11:18:12

你可以使用这个语法:

<?php 
foreach($arr1 as $key => $values) { 
     echo $key . "=>" . $values; 
    } 
?> 
+0

“如何输出”是问题在这里,而不是“什么sud代码来获得输出”..无论如何,谢谢.. !! – Mayur 2013-04-24 12:12:09

foreach(array_keys($arr1) as $key)迭代的$arr1键,依次分配当前关键$key。 “当前”意味着当前迭代的关键。

因为这就是foreach的工作原理。由于array_keys返回你的数组的键(“A”,“B”,...)array_keys($arr1)相同Array("a","b","c","d"),这是

Array([0] => "a", [1] => "b", ...) 

由于要遍历数组中键和值你只需要使用

foreach($arr1 as $key => $value){ 
    echo "[{$key}] = {$value}<br/>"; 
} 

array_keys($arr1)获取数组键,所以它的循环throught [ “A”, “b”, “C”, “d”。

而且你对print_r(array_keys($arr1))输出是错误的,因为它输出:

Array 
(
    [0] => a 
    [1] => b 
    [2] => c 
    [3] => d 
) 

不是你写

我给你报:

现在,

的print_r( array_keys($ ARR1));输出是

阵列([α] => 2 [B] => 22 [C] => 4 [d] => 10)

这是不正确

+0

oops ...复制粘贴错误... !! – Mayur 2013-04-24 12:04:26

+0

'array_keys($ arr1)'确实让它循环遍历a,b,c,d,并通过后续循环将它们赋值给$ key,但是它不会赋值[0] =>'a',[1] =>'b ',[2] =>'c'和[3] =>'d',因为array_keys的输出是数组 – Mayur 2013-04-24 12:09:11

+0

所有数组都是PHP中的“assiociative”,索引是整数或字符串。 – mpm 2013-04-24 12:26:54

功能array_keys返回数组的所有键。为了得到你想要的,你应该为什么要`foreach`导致这种输出时,你必须使用类似这样

foreach($arr1 as $key => $value) { 
    echo $key . "=>" . $value; 
}