2016-12-22 2 views
0

Я ищу способ оптимизации следующего кода с использованием цикла while. У меня есть 4 массива и вы хотите извлечь 1-е значение из каждого массива в наиболее эффективном путь. Это исходный код, который работает отлично:Извлечение данных из нескольких массивов с использованием цикла while

$arr1 = array ("55", "66", "77"); 
$arr2 = array ("54", "64", "771"); 
$arr3 = array ("53", "62", "772"); 
$arr4 = array ("52", "60", "773"); 
$x = 1; 
$result = "null"; 

echo $arr1[0] . " | " ; 
echo $arr2[0]. " | " ; 
echo $arr3[0]. " | " ; 
echo $arr4[0]. " | " ; 

Blow моя попытка оптимизировать ее, но она не кажется, работает:

$arr1 = array ("55", "66", "77"); 
$arr2 = array ("54", "64", "771"); 
$arr3 = array ("53", "62", "772"); 
$arr4 = array ("52", "60", "773"); 
$x = 1; 
$result = "null"; 

while($x < 5) { 
$result = "$arr".$x."[0]"; 
echo $result; 
echo " | "; 
$x = $x +1; 
} 

Выход я получаю 1 [ 1] | 2 [1] | 3 [1] | 4 [1]
Вместо 55 | 54 | 53 | 52 |

Спасибо всем!

ответ

4
while($x < 5) { 
    $result = ${"arr".$x}[0]; 
    echo $result; 
    echo " | "; 
    $x++; 
} 

или аккуратнее решение:

$arr1 = array ("55", "66", "77"); 
$arr2 = array ("54", "64", "771"); 
$arr3 = array ("53", "62", "772"); 
$arr4 = array ("52", "60", "773"); 

for($x=1; $x<5; $x++) { 
    $result = ${"arr".$x}[0]; 
    echo $result." | "; 
} 
+0

' $ { «arr». $ x} '- правильный ответ на вызов автоматического сгенерированного имени переменной. посмотрите пример выше – mtizziani

1

"Одна линия" решение с использованием call_user_func_array и array_column функции:

$result = implode(" | ", call_user_func_array('array_column', [[$arr1, $arr2, $arr3, $arr4], 0])); 

print_r($result); 

Выход:

55 | 54 | 53 | 52 
Смежные вопросы