不希望重新排序PHP数组中的键

时间:2015-02-18 18:32:50

标签: php arrays mysqli

我有一个简单的问题。构建关联数组时,键转换规则意味着包含有效整数的字符串将转换为整数类型。例如。键“8”实际上将存储在8下。(另一方面,“08”将不会被强制转换,因为它不是有效的十进制整数。)例如参见:http://php.net/manual/en/language.types.array.php

我遇到的问题是我的键是混合整数和字符串..这意味着当构建关联数组时,所有键都会重新排序,数字键首先出现在字符串之前。这是我在控制台日志中获得的示例:

...
2032: "9371.84"
2033: "9351.60"
2034: "9331.36"
2035: "9311.12"
ID: "1"
Misc1: "Russian Federation - Conventional"
Misc2: "RUS.Con1"
Misc3: "4"
Misc4: ""
...  etc.

如何避免此问题,以便关联数组不会重新排序我的键?

作为一个FYI,这就是我在PHP中生成数组的方式:

while ($array = mysqli_fetch_assoc($result)) {
$experiment[] = $array;
};

感谢您的时间, -G。

2 个答案:

答案 0 :(得分:1)

在PHP中为数组添加索引,如下所示:

$array[] = ['another array'];

将增加索引。

但是,您可以为键指定字符串,或将整数转换为字符串。

答案 1 :(得分:0)

我发现的问题的解决方法是避免关联数组结构。这就是我的循环现在的样子:

while ($array = mysqli_fetch_assoc($result)) {
$experiment[0] = array_keys($array);
$experiment[] = array_values($array);
};

令人讨厌的是$experiment[0] = array_keys($array);无法成功循环...但至少我得到了我正在寻找的结果,并且键不会被关联数组强制转换和重新排序。

如果有人知道如何避免$experiment[0]的不必要的循环,请告诉我: - )