猿问

在每个数组项上添加键/值 - PHP

我试图通过为数组中的每个项目添加一个额外的键/值来做一件简单的事情。我对此有困难,因为额外的键/值添加在底部而不是每个数组(键)内。


这是我的阵列:


[

[{

    "id": 11,

    "product_id": 3,

    "sku": 30000011,

    "name": "BCAA 2:1:1 400g Fruit Punch",

    "slug": "bcaa-211-400g-fruit-punch",

    "files_id": 1397,

    "image_name": "bcaa-211-400g-proteinfabrikken-1.jpg",

    "image_uuid": "494bacb0-13ae-11e7-b439-adf9395810da",

    "image_size": 295472,

    "image_type": "image\/jpeg",

    "image_url": "https:\/\/d2m146bkiftioz.cloudfront.net\/7-494bacb0-13ae-11e7-b439-adf9395810da\/bcaa-211-400g-proteinfabrikken-1.jpg"

}, {

    "id": 13,

    "product_id": 3,

    "sku": 30000013,

    "name": "BCAA 2:1:1 400g Lemon-Lime",

    "slug": "bcaa-211-400g-lemon-lime",

    "files_id": 1399,

    "image_name": "bcaa-211-400g-proteinfabrikken-3.jpg",

    "image_uuid": "496a1420-13ae-11e7-ba90-ddc728050acd",

    "image_size": 294101,

    "image_type": "image\/jpeg",

    "image_url": "https:\/\/d2m146bkiftioz.cloudfront.net\/7-496a1420-13ae-11e7-ba90-ddc728050acd\/bcaa-211-400g-proteinfabrikken-3.jpg"

}]

]

我需要的是为每个产品添加一个增量号(image_number),我这样做如下:


$i = 0;

        foreach($product_variants as $key => $value){

            foreach($value as $keys => $values){

                $product_variants[$key]['image_number'] = $i++;

            }

        }

但最终的结果是这样的:


[{

    "0": {

        "id": 11,

        "product_id": 3,

        "sku": 30000011,

        "name": "BCAA 2:1:1 400g Fruit Punch",

        "slug": "bcaa-211-400g-fruit-punch",

        "files_id": 1397,

        "image_name": "bcaa-211-400g-proteinfabrikken-1.jpg",

        "image_uuid": "494bacb0-13ae-11e7-b439-adf9395810da",

        "image_size": 295472,

        "image_type": "image\/jpeg",

        "image_url": "https:\/\/d2m146bkiftioz.cloudfront.net\/7-494bacb0-13ae-11e7-b439-adf9395810da\/bcaa-211-400g-proteinfabrikken-1.jpg"

    },


翻过高山走不出你
浏览 190回答 3
3回答

一只斗牛犬

尝试:$product_variants[$key][$keys]['image_number'] = $i++;您有一个如下所示的数组:array(    0 => [        0 => {            "id": 11        },         1 => {            "id": 13        }    ]]本质上,上面是你的多维数组的设置,我已经包含了键,所以你可以更清楚地看到它。foreach($product_variants as $key => $value) {    // On the first iteration, $key is equal to 0, and $value is the next array.    foreach($value as $keys => $values) {        // On the first iteration, $keys is equal to 0, and $values is the data in the array.        $product_variants[$key]['image_number'] = $i++;    }}因此,为了访问实际数据,我们需要执行以下操作:$product_variants[0][0]['data'] = 'value;您试图将信息设置为:$product_variants[0]['data'] = 'value;这就是为什么它被设置在根数组中,而不是数组中的数组。

哆啦的时光机

有多种方法可以使用键修改数组,但我会使用&对 中公开值的引用foreach:$i = 0;foreach($product_variants as &$value){    foreach($value as &$values){        $values['image_number'] = $i++;    }}
随时随地看视频慕课网APP
我要回答