Instrucțiune unică pentru buclă foreach pe matrice numite dinamic, cu un prefix comun?

$size_of_groups = "4";
// for the purpose of the question, assume $seeded_teams size is currently 32, it's array that returns data from a function i have created, 
//however the size can change
// depending on user input

// creates dynamically named arrays (i realize this is a poor way of doing 
//things, but, for my purposes it is fine
$ft = "true"; 
for ($i = 1; $i < sizeof($seeded_teams)/$size_of_groups + 1; $i++) {
    if ($ft == "true") {
        ${"group{$i}"} = array($seeded_teams[0], $seeded_teams[sizeof($seeded_teams)/2 - 1], 
        $seeded_teams[sizeof($seeded_teams)/2], $seeded_teams[sizeof($seeded_teams) - 1]);
        $ft = "false";
    } else {
        ${"group{$i}"} = array($seeded_teams[-1 + $i], $seeded_teams[sizeof($seeded_teams)/2 - $i], 
        $seeded_teams[sizeof($seeded_teams)/2 - 1 + $i], $seeded_teams[sizeof($seeded_teams) - $i]);
    }
}

Creez matrice cu nume dinamice în scenariul meu. Toate matricele create în acest fel sunt atașate cu un număr De exemplu: $ grup1, $ grup2, $ grup3, $ grup4, $ grup5, $ grup6, $ grup7, $ grup8

Dacă știu (și scriptul meu înțelege) exact câte array-uri există (și, ca rezultat, vor cunoaște toate appendas), mă întrebam dacă a existat oricum să execute o singură declarație care înțelege să treacă prin toate cele 8 fără a fi nevoie să apelați 8 bucle separate.

Îmi imaginez că probabil ar fi mult mai bine să rescrieți această parte a codului pentru a utiliza matrice multidimensionale, dar am scris câteva funcții folosind aceste informații cu destul timp în urmă când am fost cu mult mai puțin experimentată și nu am realizat domeniul proiectul. Rețineți că acest proiect este numai pentru scopuri personale.

Pentru a da un exemplu mai bun, este posibil sa faci ceva de genul asta?

for($i=0;$i < $number_of_groups + 1; i++) {
    foreach ($"{group{$i}"} as $value) {
        echo $value."
"; } }
0

1 răspunsuri

You can accomplish this with variable variables:

for($i = 0; $i < $number_of_groups + 1; i++) {
    $var = 'group' . $i;
    foreach ($$var as $value) {
       //...
    }
}
0
adăugat
Mulțumesc mult, lucrurile au funcționat perfect.
adăugat autor anditpainsme, sursa
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT