【问题标题】:Replace Array Keys with Ascending Numbers用升序数字替换数组键
【发布时间】:2012-05-14 21:56:23
【问题描述】:

我有一个如下所示的数组:

[867324]  
    [id] => 867324  
    [name] => Example1  

[345786]    
    [id] => 345786
    [name] => Example2

[268531]  
    [id] => 268531
    [name] => Example3 

如您所见,第一个元素没有任何特定的顺序。出于示例的目的,您可以将它们视为随机数。我想得到的最终结果是:

[0]  
    [id] => 867324  
    [name] => Example1  

[1]    
    [id] => 345786
    [name] => Example2

[2]  
    [id] => 268531
    [name] => Example3  

我试过爆炸,但显然我做错了什么。任何帮助表示赞赏!

【问题讨论】:

    标签: php arrays key element


    【解决方案1】:

    这将在保留元素顺序的同时对键重新编号。

    $new_array = array_values($old_array);
    

    【讨论】:

    • 啊,原来如此。现在只是好奇 - 对于一个相当大的数组,这种类型的过程有多快?
    • 相当慢。我刚刚编写了一个脚本来重复对 1,000 个元素的数组重新编号,而我的 2.8GHz 机器每秒几乎无法管理 8,000 次迭代。如果你有超过几十个元素,你肯定不想在每次页面加载时都这样做。
    • 好吧,我不会替换每个元素上的键。大约 10 xD
    【解决方案2】:

    您可以使用array_values() 重置数组键:

    $array = array_values($array);
    

    使用这个方法一个数组比如:

    Array('123'=>'123',
          '456'=>'456',
          '789'=>'789')
    

    将被重新编号为:

    Array('0'=>'123',
          '1'=>'456',
          '2'=>'789')
    

    【讨论】:

      【解决方案3】:

      如果元素的顺序无关紧要,我相信PHP的排序方法不会维护索引。 http://www.php.net/manual/en/function.sort.php

      sort($array);
      

      注意:此函数将新键分配给数组中的元素。它将删除任何可能已分配的现有键,而不仅仅是重新排序键。

      更新: 这确实有效,尽管提到的 array_values 方法更有意义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-22
        • 2011-09-17
        • 1970-01-01
        • 2014-10-07
        相关资源
        最近更新 更多