开发者

php array gets screwed up by foreach [duplicate]

开发者 https://www.devze.com 2023-04-12 17:25 出处:网络
This question already has answers here: Closed 10 years ago. 开发者_Python百科 Possible Duplicate: Why does PHP overwrite values when I iterate through this array twice (by reference, by value)
This question already has answers here: Closed 10 years ago. 开发者_Python百科

Possible Duplicate:

Why does PHP overwrite values when I iterate through this array twice (by reference, by value)

I got an array which if i print_r it looks like:

Array
(
    [0] => Array
        (
            [0] => 13
            [product_id] => 13
            [1] => 1
            [account_id] => 1
            [vat type] => 0
            [vat included] => 0
            [price] => 3
            [unit] => test3
            [product number] => 3
        )
    [1] => Array
        (
            [0] => 12
            [product_id] => 12
            [1] => 1
            [account_id] => 1
            [vat type] => 1
            [vat included] => 0
            [price] => 2
            [unit] => test2
            [product number] => 2
        )
    [2] => Array
        (
            [0] => 11
            [product_id] => 11
            [1] => 1
            [account_id] => 1
            [vat type] => 2
            [vat included] => 0
            [price] => 1
            [unit] => test1
            [product number] => 1
        )
)

Now when i use a foreach to loop through it something weird happens. when i print_r each subarray in a foreach loop it looks like:

Array
(
    [0] => 13
    [product_id] => 13
    [1] => 1
    [account_id] => 1
    [vat type] => 0
    [vat included] => 0
    [price] => 3
    [unit] => test3
    [product number] => 3
)
Array
(
    [0] => 12
    [product_id] => 12
    [1] => 1
    [account_id] => 1
    [vat type] => 1
    [vat included] => 0
    [price] => 2
    [unit] => test2
    [product number] => 2
)
Array
(
    [0] => 12
    [product_id] => 12
    [1] => 1
    [account_id] => 1
    [vat type] => 1
    [vat included] => 0
    [price] => 2
    [unit] => test2
    [product number] => 2
)

Notice the 3th entry. It's a mysterie to me. Anyone knows why this happens?


the comment of 'deceze' pretty much solved the problem. i used:

foreach($products as &$product){

and than added some entries to $product. replacing that with:

foreach($products as $key=>$product){

and modifying $products[$key] solved the problem

Thanks =D

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号