PHP数组:有没有办法强制所有数组键都是字符串


PHP Array: Is there a way to force all array keys to be string?

编辑:我已经对我的问题做了一个演示:http://codepad.org/ByNdAdCI

我们使用以下逻辑将数组设置为 32 位 php:

    private function formatAvailableOptions($availableOptions) {
    $optionsAsArray = array();
    foreach($availableOptions as $option){
        $optionsAsArray[$option["entity_id"]] = $option["name"];
    }
    return $optionsAsArray;
}

问题:

  1. $option["entity_id"]变得太大,无法容纳 32 位 int,因此在创建 $optionsAsArray 时溢出。 例如

    $optionsAsArray[2147483648] = "hi";

成为

$optionsAsArray[-2147483648] = "hi";

我需要2147483648索引,因为它与数据库中的 id 相关联

  1. 此代码已传送到客户端,并且该逻辑在许多地方使用,这使得将每个实例修改为

    $optionsAsArray[strVal(2147483648)] = "hi";

通过使用字符串类型作为关联数组的键来使其正常运行。

在这种情况下,最好的解决方案是什么? 是否有全局配置选项可以强制所有 php 数组使用字符串作为键来解决此问题?

似乎,它不喜欢浮点作为键;)因此,强制转换为浮点的类型失败。您已经在问题中提到了您的解决方案(strVal($var),或(string) $var,或只是"$var")。如果您的客户以 64 位运行 PHP(他们应该;)),他们看不到任何区别。因为这显然是一个错误,您应该考虑修复它并向您的客户发布更新。没有选项或设置可以即时将 32 位安装转换为 64 位安装。