[英]Create multidimensional array from newly combined arrays
我有幾個要合並為新數組的數組,但是每個新數組都需要每個值都有一個值。 僅創建多維數組是不夠的。 因此,任何幫助都會很棒。
我有這個數組
Array (
[0] => Array (
[0] => Supplier 1
[1] => Supplier 1
[2] => Supplier 2
)
[1] => Array (
[0] => Product 1
[1] => Product 2
[2] => Product 3
)
[2] => Array (
[0] => 123456
[1] => 654321
[2] => 111111
)
[3] => Array (
[0] => 7
[1] => 40
[2] => 5
)
)
但我需要像這樣
Array (
[0] => Array (
[supplier] => Supplier 1
[descr] => Product 1
[partid] => 123456
[quantity] => 7
)
[1] => Array (
[supplier] => Supplier 1
[descr] => Product 2
[partid] => 654321
[quantity] => 40
)
[2] => Array (
[supplier] => Supplier 2
[descr] => Product 3
[partid] => 111111
[quantity] => 5
)
)
嘗試這個:
<?php
$input = array (
'3'=>array (
0 => '200046 - Aswo Service B.V.' ,
1 => '200046 - Aswo Service B.V.' ,
2 => '200013 - Weststrate verpakkingen' ,
),
'1'=>array (
0 => 'Diode 1N 4007 1000V 1A' ,
1 => 'Tyrap wit - 100x2,5mm' ,
2 => 'Kartonnen doos 50x35x35 cm' ,
),
'0'=>array (
0 => '11-00055' ,
1 => '100538' ,
2 => '100500' ,
),
'2'=>array (
0 => '7' ,
1 => '40' ,
2 => '5' ,
)
);
$result = array();
$loopLength = count($input[0]);
for($i = 0; $i < $loopLength; $i++)
{
$singleResult = array();
$singleResult['leverancier'] = $input[3][$i];
$singleResult['artikel_omschrijving'] = $input[1][$i];
$singleResult['artikel_nummer'] = $input[0][$i];
$singleResult['artikel_aantal'] = $input[2][$i];
$result[] = $singleResult;
}
echo '<pre>';
print_r($result);
echo '</pre>';
輸出為:
Array
(
[0] => Array
(
[leverancier] => 200046 - Aswo Service B.V.
[artikel_omschrijving] => Diode 1N 4007 1000V 1A
[artikel_nummer] => 11-00055
[artikel_aantal] => 7
)
[1] => Array
(
[leverancier] => 200046 - Aswo Service B.V.
[artikel_omschrijving] => Tyrap wit - 100x2,5mm
[artikel_nummer] => 100538
[artikel_aantal] => 40
)
[2] => Array
(
[leverancier] => 200013 - Weststrate verpakkingen
[artikel_omschrijving] => Kartonnen doos 50x35x35 cm
[artikel_nummer] => 100500
[artikel_aantal] => 5
)
)
您可以使用PHP方法array_map
[1]執行此操作(假設您原始的多維數組在$arr
):
$res = array_map(
function ($lev, $oms, $num, $aan) {
return [
'leverancier' => $lev,
'artikel_omschrijving' => $oms,
'artikelnummer' => $num,
'artikel_aantal' => $aan
];
},
$arr[3],
$arr[1],
$arr[0],
$arr[2]);
它的作用是循環遍歷在函數調用末尾傳遞的所有n
數組,然后將每個數組中相同位置的條目傳遞給回調函數。
帶有array_unshift
, call_user_func_array
, array_map
和array_combine
函數的統一解決方案(針對任何數量的元素):
// $arr is your initial array
$keys = ['leverancier', 'artikel_omschrijving', 'artikelnummer', 'artikel_aantal'];
array_unshift($arr, null);
$res = call_user_func_array("array_map", $arr);
$result = array_map(function($v) use (&$keys){
return array_combine($keys, $v);
}, $res);
var_dump($result); // this will return the expected result
array (size=3)
0 =>
array (size=4)
'leverancier' => string '200046 - Aswo Service B.V.' (length=26)
'artikel_omschrijving' => string 'Diode 1N 4007 1000V 1A.' (length=23)
'artikelnummer' => string '11-00055' (length=8)
'artikel_aantal' => int 7
1 =>
array (size=4)
'leverancier' => string '200046 - Aswo Service B.V.' (length=26)
'artikel_omschrijving' => string 'Tyrap wit - 100x2,5mm' (length=21)
'artikelnummer' => int 100538
'artikel_aantal' => int 40
2 =>
array (size=4)
'leverancier' => string '200013 - Weststrate verpakkingen' (length=32)
'artikel_omschrijving' => string 'Kartonnen doos 50x35x35 cm' (length=26)
'artikelnummer' => int 100500
'artikel_aantal' => int 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.