-5

我问的数组问题可以在这段代码中看到。

$sample=array('2'=>"A", "abc"=>"B", 2=>"C");
$sample_keys=array_keys($sample);
foreach ($sample_keys as $keys)
{
   echo $keys, $sample[$keys],"\n";
}

The output is
2C
abcB

$sample[0] 会出错,$sample[1] 也会出错

程序员如何处理这种运行时向数组添加的问题?我是php新手

4

2 回答 2

1

根据手册“包含有效整数的字符串将被转换为整数类型。例如,键'8'实际上将存储在 8 下。另一方面,'08' 不会被转换,因为它不是有效的十进制整数。”

因此,在您的代码中:

$sample_keys=array_keys($sample);

该变量$sample_keys仅包含值2abc

至于你评论“$sample[0]给出一个错误,所以也有$sample[1]”,他们当然会这样做。您的数组不包含键01. 它包含2abc

程序员可以通过提前计划可以添加到数组中的可能值来在运行时控制这种类型的东西。如有必要,他可以使用诸如array_key_exists找出给定键是否在数组中并根据需要进行调整等功能。

于 2013-07-19T14:46:22.490 回答
-1

循环遍历数组的正确方法是:

$sample=array('2'=>"A", "abc"=>"B", 2=>"C");
foreach ($sample as $k => $v)
{
   echo "key=$k,value=$v,"\n";
}

所以 PHP 没有运行时问题,就像 C++ 一样。foreach 知道数组何时完成。

于 2013-07-19T14:43:03.267 回答