将数组从一种形式转换为另一种形式

时间:2017-05-10 16:41:19

标签: php arrays

我有一个数组。

Array
    (
        [0] => 1_4
        [1] => 1_1
        [2] => 1_2
        [3] => 2_3
        [4] => 2_5
    )

我想将其转换为

Array
    (
    [1] => Array (4,1,2)
    [2] => Array (3,5)
    )

任何人都能帮助我吗?新键(1和2)是_之前数组第1部分的不同值。

3 个答案:

答案 0 :(得分:1)

又快又脏......

foreach($array as $value){      // Loop your current array
  $arr = substr($value,0);              // Get the character before _, 1 or 2
  $val = substr($value,2);               // Get character after _, 1,2,3,4 or 5
  if($arr == 1){                // if 1_, put into first new array
     $newArray[0][] = $val; 
  }else{ 
     $newArray[1][] = $val;       // Put into second array else
  }
}
print_r($newArray);

答案 1 :(得分:1)

如果下划线始终是唯一的分割,则可以在下划线上爆炸并将结果附加到新数组。

$before = ['1_4','1_1','1_2','2_3','2_5'];

$after = [];
foreach ($before as $entry) {
    $index = explode('_',$entry);
    $after[$index[0]][] = $index[1]; 
}

return $after;

答案 2 :(得分:0)

也许尝试这样的事情?

foreach ($array as $element( {
  $kv_pair = explode("_", $element, 2);

  if (array_key_exists($kv_pair[0])) {
    array_push($new_array[$kv_pair[0]], $kv_pair[1]);
  } else {
    $new_array[$kv_pair[0]] = [$kv_pair[1]];
  }
}