如何从多维动态数组的内部数组中获取值,而不使用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

我想把这个值赋给一个新变量,就是这样。我不想要上面数组中的任何数据。所以我认为要从这个大数组中得到一个值应用很多循环并不是个好做法。我想在最小值为0的情况下得到这个值。代码行。我该如何做到这一点?

有人能在这方面帮帮我吗?

如果你决定循环。我知道你说过你不想循环,但是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'];

请记住我没有重新创建您的数组。所以这可能是一个错误。将根据需要调整循环或静态调用

相关内容

  • 没有找到相关文章

最新更新