为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
翻过高山走不出你 2021-10-15 16:56:16
我试图通过为数组中的每个项目添加一个额外的键/值来做一件简单的事情。我对此有困难,因为额外的键/值添加在底部而不是每个数组(键)内。这是我的阵列:[[{    "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"    },
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

尝试:


$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;

这就是为什么它被设置在根数组中,而不是数组中的数组。


查看完整回答
反对 回复 2021-10-15
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

有多种方法可以使用键修改数组,但我会使用&对 中公开值的引用foreach:


$i = 0;

foreach($product_variants as &$value){

    foreach($value as &$values){

        $values['image_number'] = $i++;

    }

}


查看完整回答
反对 回复 2021-10-15
  • 3 回答
  • 0 关注
  • 189 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信