Tamam, neredeyse senaryolarımı bitirdim, ancak çıktımın olması gerektiği gibi değil. Komut dosyası görevi, tüm çok boyutlu dizi anahtarlarının toplamından tüm olası sayı kombinasyonlarını oluşturmaktır. Ive birkaç betik düzenledim ve tek bir betikte birleştirdim, ancak istenilen çıktıyı elde edemiyorum.PHP tüm olası sayı kombinasyonlarını çıktı
$test = array(0 => array(53, 22, 12),
1 => array(94, 84, 94),
2 => array(56, 45, 104)
);
Sonra dizi anahtarlarını alıp yeni dizide saklayabilirsiniz:
foreach ($test as $key => $row) {
$output[] = count($row);
}
for($keycount = 1; $keycount <= count($output); $keycount++){
$newarray[$keycount] = $keycount;
}
Sonra anahtarları saymak
Ok, örneğin, bunun gibi dizi söylüyorlar sağlar Yeni oluşturulan dizi, bu yüzden son kombinasyon bu sayıya dayanmaktadır.
111
211
311
121
221
321
131
231
331
112
.
.
.
333
Ama komut dosyası ile: böyle
$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>";
alıyorum çıktı:
nihai dizi böyle bakmak gerekiyordu bu yüzden yukarıda bahsedilen örnekte, ben 3 kombinasyonları varArray
(
[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
)
Olası kopyalar (http://stackoverflow.com/questions/15101494/how-to-get- [çok boyutlu dizinin tüm olası kombinasyonları nasıl alınır] hepsi-olası-çok-çok-kombinasyonlu kombinasyonları) – mitkosoft
Sabit anahtar ve değerleri kullandığı için, bu konuyu yinelenen olarak sınıflandırabileceğinizi düşünmüyorum. – Greedy
Görünüşe göre, iki boyutlu bir dizi '$ return [$ i] []' kullanıyorsunuz. Her girişin tam olarak bir değeri varsa, bunun yerine '$ return [$ i] =' veya '$ return [] =' kullanabilirsiniz. – LSerni