关联数组有一个奇怪的问题。这段代码:
$sql = DB::select('id','process_id')->from('field')->order_by('process_id')->order_by('sort_order');
$query = $sql->execute();
foreach($query->as_array() as $row){
$results[$row['id']] = $this->get_field($row['id']);
}
创建一个带有数字键的数组。在我的开发环境中,该数组被视为一个关联数组,并且按照它从查询中构建的顺序进行排序。但是,在生产中,它将键视为数字并根据 ID 进行排序。如果我强制 PHP 通过以下方式考虑键关联:
$results["a".$row['id']] = $this->get_field($row['id']);
它使用 MySQL 排序。不幸的是,尽管有很多代码依赖于仅作为 ID 的 key 。
有没有人对服务器之间可能存在差异的原因有任何想法?任何解决方法的想法?
最佳答案
也许尝试将其转换为字符串?
$results[(string)$row['id']] = $this->get_field($row['id']);
或者,如果您只关心顺序,只需将它们作为普通列表放入即可:
$results[] = $this->get_field($row['id']);
关于php - 您可以强制 PHP 将数字键视为关联数组键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7759890/