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
)
)