PHP从多维数组和单数组循环创建新数组


PHP Create new array from multidimensional array and single array looping

我有一个多维数组和一个数组,我想使用每个数组中的键作为标记点,用这些数组中的数据创建新的数组。

单阵列:

array(12) {
  [11]=>
  string(18) "Blacklist Customer"
  [2]=>
  string(11) "Change Mind"
  [8]=>
  string(5) "Fraud"
  [1]=>
  string(13) "Late Delivery"
  [0]=>
  string(3) "N/A"
  [7]=>
  string(12) "No Statement"
  [5]=>
  string(8) "No Stock"
  [4]=>
  string(15) "Order Suspected"
  [10]=>
  string(20) "SOP Cancelation Rule"
  [9]=>
  string(15) "Sourcing Issues"
  [3]=>
  string(13) "Suspect Fraud"
  [6]=>
  string(20) "Wrong Payment Method"
}

多维数组:

array(6) {
  [1]=> //Late delivery
  array(2) {
    [0]=> // this is sales key. It means sales with ID 0 have 4 late delivery
    float(4)
    [2]=> // this is sales key. It means sales with ID 2 have 3 late delivery
    float(3)
  }
  [0]=> //NA
  array(2) {
    [0]=>
    float(2)
    [2]=>
    float(10)
  }
  [2]=> //Change Mind
  array(2) {
    [0]=>
    float(1)
    [2]=>
    float(1)
  }
  [5]=> //No stock
  array(1) {
    [2]=>
    float(1)
  }
  [4]=> //Order Suspected
  array(1) {
    [2]=>
    float(1)
  }
  [6]=> //Wrong payment method
  array(1) {
    [10]=>
    float(1)
  }
}

我想有这样的新数组(我用键来指示我将推送或添加到新数组中的数据。:

array(12) {
  [Blacklist Customer]=>
  array(0) {
  }
  [Change Mind]=>
  array(2) {
    [0]=>
    float(1)
    [2]=>
    float(1)
  }
  [Fraud]=>
  array(0) {
  }
  [Late Delivery]=>
  array(2) {
    [0]=>
    float(4)
    [2]=>
    float(3)
  }
  [N/A]=>
  array(2) {
    [0]=>
    float(2)
    [2]=>
    float(10)
  }
  [No Statement]=>
  array(0) {
  }
  [No Stock]=>
  array(1) {
    [2]=>
    float(1)
  }
  [Order Suspected]=>
  array(1) {
    [2]=>
    float(1)
  }
  [SOP Cancelation Rule]=>
  array(0) {
  }
  [Sourcing Issues]=>
  array(0) {
  }
  [Suspect Fraud]=>
  array(0) {
  }
  [Wrong Payment Method]=>
  array(1) {
    [10]=>
    float(1)
  }
}

有可能使用循环来创建这样的新数组吗?非常感谢!

此代码:

$arr; // Array
$mult; // Multi dimensional array
$out; // created array
foreach ( $arr as $id=>$name ) {
    if ( array_key_exists($mult, $id) ) 
       $out[$name] = $mult[$id];
    else
       $out[$name] = array();
}