需要PHP嵌套数组列表

时间:2016-02-05 01:59:57

标签: php arrays list nested

我试图通过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";
 }

我尝试用括号切换括号(但没有运气。

2 个答案:

答案 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]";
}
希望这会有所帮助......