我不知道为什么这不起作用。我尝试了一切。我确定我错过了什么。
这是数组:
$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'];
}
我该怎么办?代码有什么问题?
答案 0 :(得分:0)
内部数组中没有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。
答案 1 :(得分:0)
由于数组的结构方式,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循环应该使用类似结构的数组。
答案 2 :(得分:0)
如果你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
语句应该正确迭代。