php - 您可以强制 PHP 将数字键视为关联数组键吗?

标签 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 的 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/

相关文章:

php - 如何在向数据库中添加条目时在标签表中执行搜索?

php - 在 PHP 中处理大型 XML 的最佳方式

php - 设置数据库和访问控制权限

javascript - 如何使用 Javascript 获取元素为对象的唯一数组

ios - 如果任何值为 NULL,CFPropertyListCreateDeepCopy 返回 nil

php - 从 sql 文件加载时,mysql_query 不部分工作

php - 在 PHP 中捕获网关超时的困难

javascript - 如何在javascript中拼接数组中的项目

c - 在c中打印出一个3D数组

c - 项目 : Body Scanner, ACM 1993