【问题标题】:AutoIncrement (re-order) php Array valuesAutoIncrement(重新排序)php数组值
【发布时间】:2012-12-19 11:54:17
【问题描述】:

有没有办法对数组中的值重新排序?例如我有

 Array (
    "one" => 0,
     "tow" => 0,
     "three" => 0,
     "four" => 8,
     "apple" => 4,
     "pink" => 3,
   );

并将其转换为

 Array (
    "one" => 0,
     "tow" => 1,
     "three" => 2,
     "pink" => 3,
     "apple" => 4,
     "four" => 5,
   );

编辑:

请注意,“4”的值更大,应该改为 5,“apple”和“pink”不应该改变

【问题讨论】:

    标签: php


    【解决方案1】:

    那么简单...

    $source  = array('one' => 0, 'tow' => 0, 'three' => 0, 'four' => 8, 'apple' => 4, 'pink' => 3);
    asort($source);
    $result  = array_flip(array_keys($source));
    

    解释:array_keys 会将原始数组的所有键收集为另一个 索引 数组,array_flip 只会将这些索引转换为值。 )

    【讨论】:

    • 由于array_keys 也返回字符串,因此array_keys 是否不只是“one”、“tow”、“three”?
    • @Jonasm array_keys 的结果看起来像array(0 => 'one', 1 => 'tow', 2 => 'three')。 array_flip 将翻转这个数组,所以它变成('one' => 0, 'tow' => 1, 'three' => 2):键变成值,值变成键。 )
    • @raina77ow 是的,我的错。 :-) gg
    • 他希望在翻转之前对其进行排序,注意four 在第二个数组中的另一个位置。加上这个,我认为这个答案是赢家:)
    • @PederN )) 将此添加到答案中,然后看到您的评论。 ) 无论如何,很好的捕捉。 )
    【解决方案2】:
    $i = 0;
    foreach( $array as $key => $value )
    {
        $array[$key] = $i;
        $i++
    }
    

    应该这样做:-)

    【讨论】:

      【解决方案3】:

      您可能正在寻找PHP asort()

      【讨论】:

      • 他想重新编号,而不是排序。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      相关资源
      最近更新 更多