你能强制PHP将数字键视为关联数组键吗?

时间:2011-10-13 20:12:26

标签: php arrays

关联数组有一个奇怪的问题。这段代码:

$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。

有没有人想过为什么服务器之间可能存在差异?任何解决方法的想法?

1 个答案:

答案 0 :(得分:2)

也许尝试将其作为字符串投射?

$results[(string)$row['id']] = $this->get_field($row['id']);

或者如果您关心的只是订单,只需将它们作为正常列表放入:

$results[] = $this->get_field($row['id']);