如何避免以后的PHP数组覆盖的PHP数组中的先前值?

时间:2016-05-07 03:16:10

标签: php arrays

如何避免以下34 overridden by 124代码中的PHP?我只想保留34124两者。

$arr = array(12, 34, "df"=>43, "1"=>124, 65);
$num = count($arr);
reset($arr);
for ($i = 1; $i <= $num; ++$i) {
    echo 'The Current Position:' . key($arr);
    echo '<br />';
    echo 'The Current Value:'. current($arr);
    next($arr);
    echo '<br />';
    echo '<br />';
}

2 个答案:

答案 0 :(得分:1)

  

您的数组索引无效。

您需要设计一个包含唯一键的数组,让PHP进行索引。你可以改变索引&#34; 1&#34;用&#34;一个&#34;对于唯一的密钥。

如果你print_r你的阵列,你必须看到这样的结果

Array
(
    [0] => 12
    [1] => 124
    [df] => 43
    [2] => 65
)

因此,不要使用重复键创建数组,否则可能会丢失数据。

$arr = array(12, 34, "df" => 43, "one" => 124, 65);
foreach($arr as $key => $val){
    echo $key." - ".$val."<br/>";
}

结果:

key - value
0   - 12
1   - 34
df  - 43
one - 124
2   - 65

答案 1 :(得分:1)

PHP将始终将所有数字键视为整数,即使它们位于字符串变量或引号内。

以下内容可以说得非常明显:

<?php

$arr = [1 => 'hi', '2' => 'bye', 'a1' => 'hiha'];

var_export($arr);

解决方案是将不希望索引的值作为带整数的整数前缀。

请注意,混合索引和关联数组表明您将在以后遗憾的组织严重缺乏,如果您还没有。