PHP foreach 循环不适用于嵌套数组
PHP foreach loop not working on an a nested array
我不知道为什么这不起作用。我已经尝试了一切。我确定我错过了什么。
这是数组:
$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];
}
但是这个 foreach 循环没有:
foreach($userList as $user) {
echo $user['first_name'];
echo $user['last_name'];
}
我该怎么办?代码有什么问题?
您的内部数组中没有 first_name
或 last_name
键。 $user
包含的分别是array('John','Jane')
array('Smith','Doe')
.
你可能想要的是这样的结构:
$userList = array(
array('first_name' => 'John', 'last_name' => 'Smith'),
array('first_name' => 'Jane', 'last_name' => 'Doe')
);
这允许您使用您已经拥有的 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 循环应该适用于这样结构的数组。
如果你这样做 print_r($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
语句应该正确迭代。
我不知道为什么这不起作用。我已经尝试了一切。我确定我错过了什么。
这是数组:
$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];
}
但是这个 foreach 循环没有:
foreach($userList as $user) {
echo $user['first_name'];
echo $user['last_name'];
}
我该怎么办?代码有什么问题?
您的内部数组中没有 first_name
或 last_name
键。 $user
包含的分别是array('John','Jane')
array('Smith','Doe')
.
你可能想要的是这样的结构:
$userList = array(
array('first_name' => 'John', 'last_name' => 'Smith'),
array('first_name' => 'Jane', 'last_name' => 'Doe')
);
这允许您使用您已经拥有的 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 循环应该适用于这样结构的数组。
如果你这样做 print_r($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
语句应该正确迭代。