我试图通过foreach循环两个值。我在php.net上找到了一个很好的例子,但是当我尝试实现它时,它显示为错误的代码。
$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";
}
我尝试用括号切换括号(但没有运气。
答案 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 )
{
(...)
}
}
显然,你的第二个例子也有同样的误解。
答案 1 :(得分:0)
$array = [
[1, 2],
[3, 4],
];
foreach ($array as list($a, $b)){}
在 $ array 中,您使用了错误的语法来分配值 您在 foreach函数中所做的是您将数组的值赋给名为list()的函数,这是错误的...
您需要像这样编辑代码
$array = array(array(1,2),array(3,4));
foreach ($array as $list) {
echo "A:$list[0] B:$list[1]";
}
希望这会有所帮助......