Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP foreach循环在嵌套数组上不起作用_Php_Arrays_Foreach - Fatal编程技术网

PHP foreach循环在嵌套数组上不起作用

PHP foreach循环在嵌套数组上不起作用,php,arrays,foreach,Php,Arrays,Foreach,我不知道为什么这不起作用。我什么都试过了。我肯定我错过了什么 以下是阵列: $userList = array('first_name'=>array('John','Jane'), 'last_name'=>array('Smith','Doe')); for循环有效,我确实得到了正确的输出: $usercount = count($userList); for($i=0; $i < $usercount; $i++) { echo $userList['first

我不知道为什么这不起作用。我什么都试过了。我肯定我错过了什么

以下是阵列:

$userList = array('first_name'=>array('John','Jane'), 'last_name'=>array('Smith','Doe'));
for循环有效,我确实得到了正确的输出:

$usercount = count($userList);  
for($i=0; $i < $usercount; $i++) {  
echo $userList['first_name'][$i];  
}

我该怎么办?代码有什么问题?

内部数组中没有
名字
姓氏
键。
$user
包含的是
数组('John','Jane')
分别
数组('Smith','Doe')

不过,您可能需要的结构如下:

$userList = array(
    array('first_name' => 'John', 'last_name' => 'Smith'), 
    array('first_name' => 'Jane', 'last_name' => 'Doe')
);

这允许您使用allready拥有的foreach。

由于阵列的结构方式,foreach方法无法提供所需的输出:

foreach($userList as $user) {
    //$user is array('John', 'Jane') on the first iteration
}
您可以将阵列更新为如下所示:

array(
    array('first_name' => 'John', 'last_name' => 'Smith'),
    array('first_name' => 'Jane', 'last_name' => 'Doe')
);
您的foreach循环应该使用这样的数组结构。

如果您使用打印($userList)输出为

Array
(
    [first_name] => Array
        (
            [0] => John
            [1] => Jane
        )

    [last_name] => Array
        (
            [0] => Smith
            [1] => Doe
        )
)
如您所见,您将所有的名字存储在一个数组中,所有的姓氏存储在另一个数组中。我认为您的意思是将每个用户存储在他们自己的数组中

要做到这一点,你需要

 $userList = array(array("first_name" => "John", "last_name" => "Doe"), array("first_name" => "Jane", "last_name" => "Doe"));
现在如果您
print\r($userList)它将输出:

Array
(
    [0] => Array
        (
            [first_name] => John
            [last_name] => Doe
        )

    [1] => Array
        (
            [first_name] => Jane
            [last_name] => Doe
        )

)

您的
foreach
语句应该正确地遍历它。

您可能想要这样的数组(数组('first_name'=>'Jone','last_name'=>'Smith'),…)谢谢您的快速回答。这正是我想知道的。
Array
(
    [0] => Array
        (
            [first_name] => John
            [last_name] => Doe
        )

    [1] => Array
        (
            [first_name] => Jane
            [last_name] => Doe
        )

)