2016-05-06 16 views
0

多次元配列と配列を持っていますが、各配列のキーをマークポイントとして使用して、これらの配列からデータを含む新しい配列を作成します。PHP多次元配列と単一配列ループから新しい配列を作成

シングル配列:

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) 
    } 
} 

ループを使用して新しい配列を作成することはできますか? ありがとう!

答えて

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(); 
} 
+0

ありがとう!出来た! array_key_existのパラメータが逆の場合を除きます。もう一度ありがとう! –