foreach如何遍历数组?

时间:2012-12-11 17:51:06

标签: php arrays

我发现foreach按照添加元素的顺序遍历数组。看到这段代码:

$array = array();
$array[0] = "me0";
$array[1] = "me1";
$array[2] = "me2";
$array[4] = "me4";
$array[5] = "me5";

//changing
$array[3] = "me3Changed";

foreach($array as $item)
{
    echo $item.'<br />';
}

echo '<br />';
ksort($array);

foreach($array as $item)
{
    echo $item.'<br />';
}

输出:

me0
me1
me2
me4
me5
me3Changed

me0
me1
me2
me3Changed
me4
me5

这表明数组没有以for($i;$i<$arrayLength;$i++)的方式遍历 它是如何穿越的?假设php是用C ++编写的,它应该使用一些c ++函数来实现这一点。 任何人都可以向我解释foreach如何遍历数组?

<小时/> C ++按索引遍历数组的示例:

std::string arr[10]; 
arr[0] = "me0";
arr[1] = "me1";
arr[2] = "me2";
arr[4] = "me4";
arr[5] = "me5";

//changing
arr[3] = "me3Changed";

for(int x = 0; x < 6;x++)
{
    std::cout << arr[x] << std::endl;
}

2 个答案:

答案 0 :(得分:4)

PHP数组是有序的键值存储。这意味着密钥有一个顺序,这是它们被添加到数组的顺序(或拼接在一起或排序或确定顺序的任何顺序)。 foreach以这种固有的内置顺序遍历数组。

我不知道这是否与C中的任何内容相比.PHP的数组是其独特的功能之一。大多数语言都有键值存储(字典/散列)有序数组(列表)。 PHP将有序键值存储作为唯一的数组类型。

答案 1 :(得分:0)

在您添加键/值对时形成数组,查看here。因此,foreach也按此顺序遍历。

然而,您要将它与指定for($i;$i<$arrayLength;$i++)的循环index进行比较,因此,它始终会搜索该密钥,然后打印其相应的值。

修改: Example解释上述内容。