Хорошо, я почти закончил свой сценарий, но мой результат не совсем так, как предполагалось. Задача сценариев состоит в создании всех возможных комбинаций чисел из суммы всех многомерных ключей массива. Ive отредактировал несколько сценариев и объединил их в одном скрипте, но я не могу получить желаемый результат.PHP вывод всех возможных комбинаций чисел
Хорошо, например, позволяет сказать, что у меня есть массив, как этот:
$test = array(0 => array(53, 22, 12),
1 => array(94, 84, 94),
2 => array(56, 45, 104)
);
Затем Принести ключи массива и хранить их в новом массиве:
foreach ($test as $key => $row) {
$output[] = count($row);
}
for($keycount = 1; $keycount <= count($output); $keycount++){
$newarray[$keycount] = $keycount;
}
А потом я рассчитывать ключи вновь созданный массив, поэтому окончательная комбинация основана на этом числе. В вышеупомянутом примере, у меня есть 3 комбинации, поэтому окончательный массив должен выглядеть следующим образом:
111
211
311
121
221
321
131
231
331
112
.
.
.
333
Но с моим сценарием:
$arraycount = count($newarray);
$maxcombinations = pow($arraycount, $arraycount);
$return = array();
$conversion = array();
foreach ($newarray as $key => $value) {
$conversion[] = $key;
}
for ($i = 0; $i < $maxcombinations; $i++) {
$combination = base_convert($i, 10, $arraycount);
$combination = str_pad($combination, $arraycount, "0", STR_PAD_BOTH);
$return[$i][] = substr(strtr($combination, $conversion), 1, $arraycount);
}
echo "<pre>".print_r($return, true)."</pre>";
Я получаю вывода, как это:
Array
(
[0] => Array
(
[0] => 111
)
[1] => Array
(
[0] => 121
)
[2] => Array
(
[0] => 131
)
[3] => Array
(
[0] => 211
)
[4] => Array
(
[0] => 221
)
[5] => Array
(
[0] => 231
)
[6] => Array
(
[0] => 311
)
Возможный дубликат [Как получить все возможные комбинации многомерного массива] (http://stackoverflow.com/questions/15101494/how-to-get- all-possible-combination-of-multimimensional-array) – mitkosoft
Я не думаю, что вы можете классифицировать эту тему как дубликат, поскольку он использует фиксированные ключи и значения. – Greedy
Очевидно, вы используете двумерный массив '$ return [$ i] []'. Если каждая запись имеет ровно одно значение, вы можете использовать вместо этого '$ return [$ i] =' или '$ return [] ='. – LSerni