2016-02-05 73 views
0

我想通過foreach循環兩個值。我在php.net上找到了一個很好的例子,但是當我嘗試實現時,它顯示爲錯誤的代碼。需要PHP嵌套數組列表

$array = [ 
    [1, 2], 
    [3, 4], 
]; 
foreach ($array as list($a, $b)) { 
    echo "A: $a; B: $b\n"; 
} 

這是應該給你:

A: 1; B: 2 
A: 3; B: 4 

http://php.net/manual/en/control-structures.foreach.php

對於我而言,我試圖做到這一點:

$array = [ 
    [$csal, Salary], 
    [$ccar, Car], 
]; 
foreach ($array as list($a, $b)) { 
    if($$a==NULL){$$ap="$b"; 
} 
} 

,我想等於

if($csal==NULL){$csal="Salary"; 
} 
if($ccar==NULL){$ccarp="Car"; 
} 

我試過用括號括起來(也沒有運氣。

+1

無論如何,你想要做什麼?把一些默認值相當?爲什麼不立即在分配上放置一個默認值,而不是在循環下執行 – Ghost

+0

因爲我必須做幾百次。 –

+0

那麼你應該在'$ csal'和其他之前做好準備,這些數據是從哪裏來的?也許在這個數組賦值之前發佈更多相關的代碼,仍然不清楚爲什麼你必須這樣做 – Ghost

回答

0
$array = [ 
[1, 2], 
[3, 4], 
]; 
foreach ($array as list($a, $b)){} 

$陣列,你使用了錯誤的語法指定值也 你做了什麼,在的foreach功能是分配數組的值是錯誤的一個函數調用列表() ...

你需要編輯這樣的代碼

$array = array(array(1,2),array(3,4)); 
foreach ($array as $list) { 
    echo "A:$list[0] B:$list[1]"; 
} 

希望這將有助於...

+0

我該如何做這個部分:if($ ccar == NULL){$ ccarp =「Car」; }。我正在考慮$$ list [0]'p'或$$ list [0] p或者「$$ list [0]」p,但這些都不起作用。我基本上想在一個新的變量的末尾連接一個字母。但循環部分正在工作。 –

+0

只需使用一個美元符號並將字符串串聯起來就像這樣'$ list [0]。'p'' –

+0

這給出了一個語法錯誤 –

0

foreach循環返回每一行的密鑰索引和值。

所以,在第一個例子:

foreach($array as list($a, $b)) 

在第一回路$a爲0(第一密鑰)和$b[1, 2],所述第一子陣列。

你必須使用一個嵌套的循環:

foreach($array as list($key, $val)) 
{ 
    foreach($val as list($key1, $val1)) 
    { 
     echo "[$key][$key1]: $val1"; 
    } 
} 

還是 - 我喜歡 - 在老式的方法:

foreach($array as $key => $val) 
{ 
    foreach($val as $key1 => $val1) 
    { 
     (...) 
    } 
} 

顯然,也是你的第二個例子具有相同的誤解。