好的,我差不多完成了我的脚本,但是我的输出并不像预期的那样。脚本任务是从所有多维数组键的总和创建所有可能的数字组合。我编辑了很少的脚本,并在一个脚本中合并,但我似乎无法获得所需的输出。
好的,例如,假设我有这样的数组:
$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
)
答案 0 :(得分:0)
你正在使用像$ return [$ i] []这样的数组,因此你的输出是意外的
尝试
$return[$i] = substr(strtr($combination, $conversion), 1, $arraycount);
而不是
$return[$i][] = substr(strtr($combination, $conversion), 1, $arraycount);