我有兩個陣列,我想得到結果陣列,其中每個元素都是這兩個陣列的笛卡爾積。
使用foreach's 它看起來像這樣:
$first = [1, 2, 3];
$second = ["A", "B"];
$res = [];
foreach($first as $num)
foreach($second as $sym)
$res[] = "$num $sym"; // the same as $num . " " . $sym
// Now res is ["1 A", "1 B", "2 A", "2 B", "3 A", "3 B"]
如何獲得相同的結果陣列array_map?就像是:
$res = array_map(
fn($num) => array_map(
fn($sym) => "$num $sym",
$second
),
$first
);
// Of course it's wrong
// Here res will be [["1 A", "1 B"], ["2 A", "2 B"], ["3 A", "3 B"]]
Mb 除了 . 還有其他功能array_map。主要的是$res = ..., 意味著$res應該分配給回傳結果陣列的東西。
謝謝。
uj5u.com熱心網友回復:
如果您想要這樣的回應["1 A", "1 B", "2 A", "2 B", "3 A", "3 B"]并使用array_map您可以執行以下操作:
$first = [1, 2, 3];
$second = ["A", "B"];
$res = [];
array_map(
function ($num) use (&$res, $second) {
array_map(
function ($sym) use (&$res, $num) {
$res[] = "$num $sym";
},
$second
);
},
$first
);
還有更優雅的方式,但在速度性能方面效率較低,因為我們還使用array_merge:
$first = [1, 2, 3];
$second = ["A", "B"];
$res = array_merge(...array_map(
fn($num) => array_map(
fn($sym) => "$num $sym",
$second
),
$first
));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/466274.html
下一篇:如何克隆具有不同特定值的物件
