2016-02-05 71 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) 
    { 
     (...) 
    } 
} 

显然,也是你的第二个例子具有相同的误解。