如何避免php数组中以前的值被后面的值覆盖


How to avoid the previous values in php array overridden by the later ones?

如何避免以下PHP代码中的34 overridden by 124?我只想同时保留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 />';
}

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

以下内容可以使其非常明显:

<?php
$arr = [1 => 'hi', '2' => 'bye', 'a1' => 'hiha'];
var_export($arr);

解决方案是在不希望索引为整数的值前面加一个字母。

请注意,混合索引数组和关联数组表示严重缺乏组织,如果您还没有这样做,您稍后会后悔的。

您的数组索引无效。

您需要设计一个具有唯一键的数组,让PHP来进行索引。您可以将索引"1"更改为唯一键的"1"。

如果你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