簡體   English   中英

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_namelast_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM