簡體   English   中英

如何在不使用PHP中的循環結構的情況下從多維動態數組的內部數組中獲取值?

[英]How to get a value from internal array of a multi-dimensional dynamic array without using loop constructs in PHP?

我有一個名為$rebate_by_product_data動態多維數組:

Array
(
    [0] => Array
        (
            [id] => 93
            [start_date] => 2014-06-01
            [end_date] => 2014-06-30
            [count] => 10000
            [rebate_type_id] => 2
            [created_at] => 1400148462
            [updated_at] => 1400148462
            [applicable_states] => Array
                (
                    [0] => Array
                        (
                            [id] => 446
                            [state_id] => 2
                            [rebate_id] => 93
                            [created_at] => 1400148462
                            [updated_at] => 1400148462
                            [state_name] => Alaska
                        )

                    [1] => Array
                        (
                            [id] => 447
                            [state_id] => 14
                            [rebate_id] => 93
                            [created_at] => 1400148462
                            [updated_at] => 1400148462
                            [state_name] => Indiana
                        )

                    [2] => Array
                        (
                            [id] => 448
                            [state_id] => 23
                            [rebate_id] => 93
                            [created_at] => 1400148462
                            [updated_at] => 1400148462
                            [state_name] => Minnesota
                        )

                    [3] => Array
                        (
                            [id] => 449
                            [state_id] => 35
                            [rebate_id] => 93
                            [created_at] => 1400148462
                            [updated_at] => 1400148462
                            [state_name] => Ohio
                        )

                    [4] => Array
                        (
                            [id] => 450
                            [state_id] => 42
                            [rebate_id] => 93
                            [created_at] => 1400148462
                            [updated_at] => 1400148462
                            [state_name] => Tennessee
                        )

                )

            [rebate_product] => Array
                (
                    [0] => Array
                        (
                            [products] => Array
                                (
                                    [0] => Array
                                        (
                                            [product_id] => 13
                                            [product_name] => Budwiser
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                    [1] => Array
                                        (
                                            [product_id] => 16
                                            [product_name] => Fosters
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                )

                            [saleable_unit] => Array
                                (
                                    [id] => 169
                                    [quantity] => 20
                                    [pack_of] => 10
                                    [volume] => 30
                                    [volume_unit_id] => 9
                                    [amount] => 40
                                    [created_at] => 1400148462
                                    [updated_at] => 1400148462
                                )

                        )

                    [1] => Array
                        (
                            [products] => Array
                                (
                                    [0] => Array
                                        (
                                            [product_id] => 14
                                            [product_name] => Kingfisher Strong
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 2
                                        )

                                    [1] => Array
                                        (
                                            [product_id] => 15
                                            [product_name] => Tuborg
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 2
                                        )

                                )

                            [saleable_unit] => Array
                                (
                                    [id] => 170
                                    [quantity] => 60
                                    [pack_of] => 50
                                    [volume] => 70
                                    [volume_unit_id] => 20
                                    [amount] => 80
                                    [created_at] => 1400148462
                                    [updated_at] => 1400148462
                                )

                        )

                )

        )

    [1] => Array
        (
            [id] => 99
            [start_date] => 2014-05-29
            [end_date] => 2014-05-30
            [count] => 12
            [rebate_type_id] => 2
            [created_at] => 1400163679
            [updated_at] => 1400248387
            [applicable_states] => Array
                (
                    [0] => Array
                        (
                            [id] => 500
                            [state_id] => 1
                            [rebate_id] => 99
                            [created_at] => 1400248387
                            [updated_at] => 1400248387
                            [state_name] => Alabama
                        )

                    [1] => Array
                        (
                            [id] => 501
                            [state_id] => 12
                            [rebate_id] => 99
                            [created_at] => 1400248387
                            [updated_at] => 1400248387
                            [state_name] => Idaho
                        )

                    [2] => Array
                        (
                            [id] => 502
                            [state_id] => 14
                            [rebate_id] => 99
                            [created_at] => 1400248387
                            [updated_at] => 1400248387
                            [state_name] => Indiana
                        )

                    [3] => Array
                        (
                            [id] => 503
                            [state_id] => 27
                            [rebate_id] => 99
                            [created_at] => 1400248387
                            [updated_at] => 1400248387
                            [state_name] => Nebraska
                        )

                )

            [rebate_product] => Array
                (
                    [0] => Array
                        (
                            [products] => Array
                                (
                                    [0] => Array
                                        (
                                            [product_id] => 12
                                            [product_name] => Signature Scotch Whiskey
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                    [1] => Array
                                        (
                                            [product_id] => 13
                                            [product_name] => Budwiser
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                    [2] => Array
                                        (
                                            [product_id] => 15
                                            [product_name] => Tuborg
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                )

                            [saleable_unit] => Array
                                (
                                    [id] => 195
                                    [quantity] => 10
                                    [pack_of] => 12
                                    [volume] => 100
                                    [volume_unit_id] => 7
                                    [amount] => 200
                                    [created_at] => 1400248388
                                    [updated_at] => 1400248388
                                )

                        )

                    [1] => Array
                        (
                            [products] => Array
                                (
                                    [0] => Array
                                        (
                                            [product_id] => 16
                                            [product_name] => Fosters
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 2
                                        )

                                    [1] => Array
                                        (
                                            [product_id] => 14
                                            [product_name] => Kingfisher Strong
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 2
                                        )

                                )

                            [saleable_unit] => Array
                                (
                                    [id] => 196
                                    [quantity] => 2
                                    [pack_of] => 12
                                    [volume] => 200
                                    [volume_unit_id] => 9
                                    [amount] => 77777
                                    [created_at] => 1400248388
                                    [updated_at] => 1400248388
                                )

                        )

                )

        )

    [2] => Array
        (
            [id] => 100
            [start_date] => 2014-06-26
            [end_date] => 2014-06-30
            [count] => 10000
            [rebate_type_id] => 2
            [created_at] => 1400240035
            [updated_at] => 1400243964
            [applicable_states] => Array
                (
                    [0] => Array
                        (
                            [id] => 495
                            [state_id] => 2
                            [rebate_id] => 100
                            [created_at] => 1400247125
                            [updated_at] => 1400247125
                            [state_name] => Alaska
                        )

                    [1] => Array
                        (
                            [id] => 496
                            [state_id] => 14
                            [rebate_id] => 100
                            [created_at] => 1400247125
                            [updated_at] => 1400247125
                            [state_name] => Indiana
                        )

                    [2] => Array
                        (
                            [id] => 497
                            [state_id] => 23
                            [rebate_id] => 100
                            [created_at] => 1400247125
                            [updated_at] => 1400247125
                            [state_name] => Minnesota
                        )

                    [3] => Array
                        (
                            [id] => 498
                            [state_id] => 35
                            [rebate_id] => 100
                            [created_at] => 1400247125
                            [updated_at] => 1400247125
                            [state_name] => Ohio
                        )

                    [4] => Array
                        (
                            [id] => 499
                            [state_id] => 42
                            [rebate_id] => 100
                            [created_at] => 1400247125
                            [updated_at] => 1400247125
                            [state_name] => Tennessee
                        )

                )

            [rebate_product] => Array
                (
                    [0] => Array
                        (
                            [products] => Array
                                (
                                    [0] => Array
                                        (
                                            [product_id] => 13
                                            [product_name] => Budwiser
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                    [1] => Array
                                        (
                                            [product_id] => 16
                                            [product_name] => Fosters
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                )

                            [saleable_unit] => Array
                                (
                                    [id] => 193
                                    [quantity] => 20
                                    [pack_of] => 10
                                    [volume] => 30
                                    [volume_unit_id] => 9
                                    [amount] => 40
                                    [created_at] => 1400247125
                                    [updated_at] => 1400247125
                                )

                        )

                    [1] => Array
                        (
                            [products] => Array
                                (
                                    [0] => Array
                                        (
                                            [product_id] => 14
                                            [product_name] => Kingfisher Strong
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 2
                                        )

                                    [1] => Array
                                        (
                                            [product_id] => 15
                                            [product_name] => Tuborg
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 2
                                        )

                                )

                            [saleable_unit] => Array
                                (
                                    [id] => 194
                                    [quantity] => 6000
                                    [pack_of] => 500
                                    [volume] => 700
                                    [volume_unit_id] => 9
                                    [amount] => 805
                                    [created_at] => 1400247125
                                    [updated_at] => 1400247125
                                )

                        )

                )

        )

    [3] => Array
        (
            [id] => 102
            [start_date] => 2014-05-20
            [end_date] => 2014-05-31
            [count] => 545
            [rebate_type_id] => 2
            [created_at] => 1400264987
            [updated_at] => 1400264987
            [applicable_states] => Array
                (
                    [0] => Array
                        (
                            [id] => 505
                            [state_id] => 2
                            [rebate_id] => 102
                            [created_at] => 1400264987
                            [updated_at] => 1400264987
                            [state_name] => Alaska
                        )

                    [1] => Array
                        (
                            [id] => 506
                            [state_id] => 3
                            [rebate_id] => 102
                            [created_at] => 1400264987
                            [updated_at] => 1400264987
                            [state_name] => Arizona
                        )

                )

            [rebate_product] => Array
                (
                    [0] => Array
                        (
                            [products] => Array
                                (
                                    [0] => Array
                                        (
                                            [product_id] => 12
                                            [product_name] => Signature Scotch Whiskey
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                )

                            [saleable_unit] => Array
                                (
                                    [id] => 200
                                    [quantity] => 7
                                    [pack_of] => 10
                                    [volume] => 88
                                    [volume_unit_id] => 7
                                    [amount] => 56
                                    [created_at] => 1400264987
                                    [updated_at] => 1400264987
                                )

                        )

                )

        )

    [4] => Array
        (
            [id] => 103
            [start_date] => 2014-05-07
            [end_date] => 2014-05-29
            [count] => 12456
            [rebate_type_id] => 2
            [created_at] => 1400266051
            [updated_at] => 1400266051
            [applicable_states] => Array
                (
                    [0] => Array
                        (
                            [id] => 507
                            [state_id] => 3
                            [rebate_id] => 103
                            [created_at] => 1400266051
                            [updated_at] => 1400266051
                            [state_name] => Arizona
                        )

                    [1] => Array
                        (
                            [id] => 508
                            [state_id] => 5
                            [rebate_id] => 103
                            [created_at] => 1400266051
                            [updated_at] => 1400266051
                            [state_name] => California
                        )

                )

            [rebate_product] => Array
                (
                    [0] => Array
                        (
                            [products] => Array
                                (
                                    [0] => Array
                                        (
                                            [product_id] => 12
                                            [product_name] => Signature Scotch Whiskey
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                    [1] => Array
                                        (
                                            [product_id] => 16
                                            [product_name] => Fosters
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 1
                                        )

                                )

                            [saleable_unit] => Array
                                (
                                    [id] => 201
                                    [quantity] => 1
                                    [pack_of] => 
                                    [volume] => 1
                                    [volume_unit_id] => 10
                                    [amount] => 4
                                    [created_at] => 1400266051
                                    [updated_at] => 1400266051
                                )

                        )

                    [1] => Array
                        (
                            [products] => Array
                                (
                                    [0] => Array
                                        (
                                            [product_id] => 13
                                            [product_name] => Budwiser
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 2
                                        )

                                    [1] => Array
                                        (
                                            [product_id] => 15
                                            [product_name] => Tuborg
                                            [manufacturer_id] => 37
                                            [company_name] => Amazon
                                            [rebate_variant_id] => 2
                                        )

                                )

                            [saleable_unit] => Array
                                (
                                    [id] => 202
                                    [quantity] => 1
                                    [pack_of] => 
                                    [volume] => 1
                                    [volume_unit_id] => 10
                                    [amount] => 5
                                    [created_at] => 1400266051
                                    [updated_at] => 1400266051
                                )

                        )

                )

        )

)

從上面可以看到,實際數組的大小也可能非常大。 這取決於用戶輸入的數據。 現在,如果您在每個帶有鍵[products]內部數組中密切觀察此數組,則會有更多數組。 但是,在[products]鍵下顯示的每個內部數組中,鍵[manufacturer_id]具有與之關聯的相同值37

我想將此值分配給新變量,就是這樣。 我不想要上述數組中的任何數據。 因此,我認為要從這個非常大的數組中獲取單個值,應用多個循環將不是一個好習慣。 我想以最少的價格獲得最佳的此值。 代碼行。 我應該如何實現呢?

有人可以在這方面幫助我嗎?

如果您決定循環。 我知道您說過您不想循環,但是3個循環的次數並不多。 所以無論如何,如果您決定改變主意,我都會為您完成。

//Loop through your array
foreach($rebate_by_product_data AS $key => $product_data){
    //Check if the rebate_product instance has been set
    if(!isset($product_data['rebate_product'])){
        //If it hasn't skip this loop continue onto the next
        continue;
    }
    //Loop through the rebate_products
    foreach($product_data['rebate_product'] AS $products){
        //rebate_products should all have manufacturer_id's ?
        foreach($products AS $product){
            //Get your manufacturer ID.
            $manufacturer_id = $product['manufacturer_id'];
        }
    }
}

如果您真的不想循環。

//Second way is to just call the indexes off one by one, statically, if you only need one instance of the manufacturer_id
$manufacturer_id = $rebate_by_product_data[0]['rebate_product'][0]['products'][0]['manufacturer_id'];

沒關系,我沒有重新創建您的數組。 因此可能有一個錯誤。 將調整循環,或在需要時進行靜態調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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