2016-12-22 45 views
0

我正在尋找一種方法來使用while循環來優化以下代碼..我有4個數組,並且想要以最有效的方式從每個數組中提取第一個值辦法。這是原來的代碼工作正常:使用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]. " | " ; 

吹我試圖優化它,但它似乎並不奏效:

$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++; 
} 

或一個整齊的溶液:使用call_user_func_arrayarray_column功能

$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

「一線」溶液:

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

print_r($result); 

輸出:

55 | 54 | 53 | 52