[PHP]Zapis pętlą w list()


(Grzesie K) #1

Witam, mam taki kod:

$data=explode(',', $tr);

						if(count($data)==12){

							list($team, $name, $kll, $dth, $sui, $tk, $eff, $aa, $dg, $dr, $td, $score)=$data;

						}elseif(count($data)==13){

							list($team, $name, $name1, $kll, $dth, $sui, $tk, $eff, $aa, $dg, $dr, $td, $score)=$data;

							$name=$name.' '.$name1;

						}elseif(count($data)==14){

							list($team, $name, $name1, $name2, $kll, $dth, $sui, $tk, $eff, $aa, $dg, $dr, $td, $score)=$data;

							$name=$name.' '.$name1.' '.$name2;

						}elseif(count($data)==15){

							list($team, $name, $name1, $name2, $name3, $kll, $dth, $sui, $tk, $eff, $aa, $dg, $dr, $td, $score)=$data;

							$name=$name.' '.$name1.' '.$name2.' '.$name3;

						}elseif(count($data)==16){

							list($team, $name, $name1, $name2, $name3, $name4, $kll, $dth, $sui, $tk, $eff, $aa, $dg, $dr, $td, $score)=$data;

							$name=$name.' '.$name1.' '.$name2.' '.$name3.' '.$name4;

						}elseif(count($data)==17){

							list($team, $name, $name1, $name2, $name3, $name4, $name5, $kll, $dth, $sui, $tk, $eff, $aa, $dg, $dr, $td, $score)=$data;

							$name=$name.' '.$name1.' '.$name2.' '.$name3.' '.$name4.' '.$name5;

						}

No oczywiście taki kod mógłby ciągnąć się w nieskończoność (a konkretnie do 35 powtórzeń). Czy da się to jakoś zastąpić pętlą?


(Grzelix) #2

można zapewne zoptymalizować ten kod ale głowny zarys masz,

najważniejsze w skrócie to utowrzenie odpowiedniego stringa i wywołanie go w funkcji eval();

$data = explode(',', $string);

$count = count($data) - 12;

$func_string = "list(\$team, \$name,";


for ($q = 1; $q <= $count; $q++) {

    $func_string .= "\$name".$q.=", ";

}

$func_string .= "\$kll, \$dth, \$sui, \$tk, \$eff, \$aa, \$dg, \$dr, \$td, \$score)=\$data;";


eval($func_string);

$names = "";

for ($q = 1; $q <= $count; $q++) {

    eval("\$var = \$name" . $q . ";");

    $names .= $var;

}

$name = $name . " " . $names;

(Grzesie K) #3

Dziękuje :slight_smile: