PHP重命名数组键(不迭代)

时间:2014-02-19 03:42:35

标签: php arrays adodb processing-efficiency

是否可以对关联映射数组的“结构”进行更改(批量重命名键或完全删除它们)线性迭代整个数组并将信息复制到新数组?还有另一种支持这种情况的PHP数据结构,比如表格吗?

为了使这一点更清楚,我可以接受这个:

$arr = array(
    array("id" => 1, "something" => "etc"),
    array("id" => 2, "something" => "etc"),
    array("id" => 3, "something" => "etc"),
    array("id" => 4, "something" => "etc"),
    array("id" => 5, "something" => "etc"),
    ...
    array("id" => $over9000, "something" => "etc")
);

并将其转换为:

$newarr = array(
    array("id" => 1, "different" => "etc"),
    array("id" => 2, "different" => "etc"),
    array("id" => 3, "different" => "etc"),
    array("id" => 4, "different" => "etc"),
    array("id" => 5, "different" => "etc"),
    ...
    array("id" => $over9000, "different" => "etc")
);

没有这样做:

$newarr = array_map(function($i){
    return array(
        "id" => $i["id"], 
        "different" => $i["something"]
    );
}, $arr);

我的用例是以某种我无法控制的格式从SQL数据库获取大约70,000行,并且必须以特定方式将其序列化为JSON(键的名称不同)。只需循环返回所有返回的记录对象的数组并对每个记录对象执行相同的选择性复制操作,这似乎是浪费10到15秒的巨大浪费。

有没有办法在恒定时间内完成这项工作?我正在与PHPADODb接口以从数据库中获取内容,因此如果它已经有一些像这样的结构,它将模式与完美的数据分开。

1 个答案:

答案 0 :(得分:0)

  

有没有办法在恒定时间内完成这项工作?

没有办法做到这一点。数组中的项是独立的,因此无法在恒定时间内更改其结构。