Tôi cần làm như vậy và tôi đã thử các giải pháp trước được đăng ở đây nhưng không thể làm cho chúng hoạt động. Tôi đã lấy mẫu từ anh chàng thông minh này http://www.php.net/manual/en/ref.array.php#54979. Tuy nhiên, mẫu của ông không quản lý khái niệm không có sự kết hợp lặp lại. Vì vậy, tôi đã bao gồm phần đó.Đây là phiên bản sửa đổi của tôi, hy vọng nó sẽ giúp:
$data = array(
array('apples', 'pears', 'oranges'),
array('steve', 'bob')
);
$res_matrix = $this->array_cartesian_product($data);
foreach ($res_matrix as $res_array)
{
foreach ($res_array as $res)
{
echo $res . " - ";
}
echo "<br/>";
}
function array_cartesian_product($arrays)
{
$result = array();
$arrays = array_values($arrays);
$sizeIn = sizeof($arrays);
$size = $sizeIn > 0 ? 1 : 0;
foreach ($arrays as $array)
$size = $size * sizeof($array);
$res_index = 0;
for ($i = 0; $i < $size; $i++)
{
$is_duplicate = false;
$curr_values = array();
for ($j = 0; $j < $sizeIn; $j++)
{
$curr = current($arrays[$j]);
if (!in_array($curr, $curr_values))
{
array_push($curr_values , $curr);
}
else
{
$is_duplicate = true;
break;
}
}
if (!$is_duplicate)
{
$result[ $res_index ] = $curr_values;
$res_index++;
}
for ($j = ($sizeIn -1); $j >= 0; $j--)
{
$next = next($arrays[ $j ]);
if ($next)
{
break;
}
elseif (isset ($arrays[ $j ]))
{
reset($arrays[ $j ]);
}
}
}
return $result;
}
Kết quả sẽ là một cái gì đó như thế này:
táo - steve
táo - bob
lê - steve
lê - bob
cam - steve
cam - bob
Nếu bạn mảng dữ liệu là một cái gì đó như thế này:
$data = array(
array('Amazing', 'Wonderful'),
array('benefit', 'offer', 'reward'),
array('Amazing', 'Wonderful')
);
Sau đó, nó sẽ in một cái gì đó như thế này:
tuyệt vời - lợi ích - Wonderful
tuyệt vời - cung cấp - Wonderful
tuyệt vời - khen thưởng - Wonderful
Wonderful - lợi ích - Amazing
Wonderful - cung cấp - Tuyệt vời
Tuyệt vời - phần thưởng - Tuyệt vời
Sẽ có Mảng 2, Array 3, Array N? Hoặc chỉ có hai mảng? –
Xin lỗi vì đã không làm rõ hơn, có thể có mảng 2, mảng 3 đến mảng n. Cảm ơn. – stukerr
Điều bạn cần là một phép nối chéo được thực hiện dễ dàng trong SQL, nhưng cần một số suy nghĩ trong PHP –