代码之家  ›  专栏  ›  技术社区  ›  SoLoGHoST

将第一个键中的值从0更改为count(数组)-1

  •  0
  • SoLoGHoST  · 技术社区  · 16 年前

    好吧,我有一个这样的数组:

    $myArray[32]['value'] = 'value1';
    $myArray[32]['type'] = 'type1';
    $myArray[33]['value'] = 'value2';
    $myArray[33]['type'] = 'type2';
    $myArray[35]['value'] = 'value3';
    $myArray[42]['value'] = 'value4';
    $myArray[42]['type'] = 'type4';
    

    好的,寻找一种快速的方法将第一个键32、33、35和42中的所有数字改为0、1、2和3。但我需要保留第二个键和所有值。数组的顺序已经正确,因为我使用ksort对它进行了排序,但是现在我需要将数组从0-count($myarray)-1重置,并保持第二个键及其值不变。

    有人能帮我吗?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Jakub Kulhan    16 年前
    $myArray = array_values($myArray);
    
        2
  •  0
  •   codaddict    16 年前

    可能有更简单的解决方案,但有一个可行的解决方案:

    $myArray = array();
    $myArray[32]['value'] = 'value1';
    $myArray[32]['type'] = 'type1';
    $myArray[33]['value'] = 'value2';
    $myArray[33]['type'] = 'type2';
    $myArray[35]['value'] = 'value3';
    $myArray[42]['value'] = 'value4';
    $myArray[42]['type'] = 'type4';
    
    $map = array_flip(array_keys($myArray)); // map old keys to new keys.
    $newarray = array();
    foreach($myArray as $key => $value) {
        $newarray[$map[$key]] = $value; // use new key and old value.
    }
    
        3
  •  0
  •   Your Common Sense    16 年前

    你不需要它。为什么不把这个阵列放在一边呢?不必要的移动会导致代码混乱。