मैं भी ऐसा ही करने की जरूरत है और मैं पिछले समाधान यहां पोस्ट की कोशिश की लेकिन उन्हें काम करने नहीं कर सकता है: एक साहचर्य संस्करण बन गया। मुझे इस चतुर लड़के http://www.php.net/manual/en/ref.array.php#54979 से नमूना मिला। हालांकि, उनके नमूने ने दोहराने वाले संयोजनों की अवधारणा को प्रबंधित नहीं किया था। तो मैंने उस भाग को शामिल किया।यहाँ मेरी संशोधित संस्करण है, आशा है कि यह मदद करता है:
$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;
}
परिणाम कुछ इस तरह होगा:
सेब - स्टीव
सेब - बॉब
नाशपाती - स्टीव
नाशपाती - बॉब
संतरे - स्टीव
: -
संतरे बॉब
डेटा सरणी कुछ इस तरह है कि आप तो लाभ - -
कमाल कमाल
कमाल - प्रस्ताव - कमाल
कमाल - इनाम - कमाल
कमाल - लाभ - कमाल
कमाल - प्रस्ताव -:
$data = array(
array('Amazing', 'Wonderful'),
array('benefit', 'offer', 'reward'),
array('Amazing', 'Wonderful')
);
तो यह कुछ इस तरह प्रिंट होगा कमाल
अद्भुत - इनाम - कमाल
वहाँ होगा सरणी 2, सरणी 3, सरणी एन? या केवल दो सरणी? –
हाय स्पष्ट करने के लिए खेद है, सरणी 2 तक सरणी 2, सरणी 3 हो सकती है। धन्यवाद। – stukerr
आपको एसक्यूएल में आसान क्रॉस में शामिल होने की आवश्यकता है, लेकिन PHP –