关联数组有一个奇怪的问题。这段代码:
$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。
有没有人想过为什么服务器之间可能存在差异?任何解决方法的想法?
答案 0 :(得分:2)
也许尝试将其作为字符串投射?
$results[(string)$row['id']] = $this->get_field($row['id']);
或者如果您关心的只是订单,只需将它们作为正常列表放入:
$results[] = $this->get_field($row['id']);