[英]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
語句應正確地迭代哪個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.