Php 如何在现有的JSON数组中推送单个元素?

Php 如何在现有的JSON数组中推送单个元素?,php,arrays,json,Php,Arrays,Json,我有一个数组,我想在其中添加一个json元素。这是数组 "six": { "donnes_table_two": [ { "denomination_de_vente": "value", "marques": "value" }, { "denominati

我有一个数组,我想在其中添加一个json元素。这是数组

"six": {
            "donnes_table_two": [
                {
                    "denomination_de_vente": "value",
                    "marques": "value"
                },
                {
                    "denomination_de_vente": "value",
                    "marques": "value"
                }
            ]
        }
我想在每个数组元素中添加ID,在添加ID之后,它将看起来像它

"six": {
            "donnes_table_two": [
                {   "id" : "1",
                    "denomination_de_vente": "value",
                    "marques": "value"
                },
                {  
                    "id" = "1",
                    "denomination_de_vente": "value",
                    "marques": "value"
                }
            ]
        }
ID在每个元素中都是相同的。我可以不使用循环来完成吗?有PHP函数吗?

$json\u value='0{
$json_value = '{
                  "six": {
                            "donnes_table_two": [
                                {
                                    "denomination_de_vente": "value",
                                    "marques": "value"
                                },
                                {
                                    "denomination_de_vente": "value",
                                    "marques": "value"
                                }
                            ]
                        }
              }';

$array_value = json_decode($json_value, true);      

 $total_inner_arrays = 1;
 for($i=0; $i<=$total_inner_arrays;$i++)
 {
    $array_value['six']['donnes_table_two'][$total_inner_arrays]['id'] = 1; 
 } 

$final_result = json_encode($array_value);
“六个”:{ “donnes_table_two”:[ { “面额”:“价值”, “品牌”:“价值” }, { “面额”:“价值”, “品牌”:“价值” } ] } }'; $array\u value=json\u decode($json\u value,true); $total_internal_array=1; 对于($i=0;$i
$json\u value=){
“六个”:{
“donnes_table_two”:[
{
“面额”:“价值”,
“品牌”:“价值”
},
{
“面额”:“价值”,
“品牌”:“价值”
}
]
}
}';
$array\u value=json\u decode($json\u value,true);
$total_internal_array=1;

对于($i=0;$i,如果它只是一个字符串,那么您可以使用PHP
str\u replace
“面额”
之前添加
“id”:“1”
,如下例所示

<?php
$json = '{"six":{
            "donnes_table_two": [
                {
                    "denomination_de_vente": "value",
                    "marques": "value"
                },
                {
                    "denomination_de_vente": "value",
                    "marques": "value"
                }
            ]
        }}';

//$json = json_encode($yourObject);//if it is an php object or Array
$json = str_replace('"denomination_de_vente"','"id":"1","denomination_de_vente"',$json);
print_r(json_decode($json,true));// here 'true' to get result as array in your case
?>

因此,如果它只是一个字符串,那么您可以使用PHP
str\u replace
“面额”
之前添加
“id”:“1”
,如下面的示例所示

<?php
$json = '{"six":{
            "donnes_table_two": [
                {
                    "denomination_de_vente": "value",
                    "marques": "value"
                },
                {
                    "denomination_de_vente": "value",
                    "marques": "value"
                }
            ]
        }}';

//$json = json_encode($yourObject);//if it is an php object or Array
$json = str_replace('"denomination_de_vente"','"id":"1","denomination_de_vente"',$json);
print_r(json_decode($json,true));// here 'true' to get result as array in your case
?>

您也可以这样做:

<?php
$str = <<<EOD
{
    "six": {
        "donnes_table_two": [
            {
                "denomination_de_vente": "value",
                "marques": "value"
            },
            {
                "denomination_de_vente": "value",
                "marques": "value"
            }
        ]
    }
}
EOD;

print '<pre>';
$response = json_decode($str, true);
print_r('Before:');
print_r($response);
$array = array_map(function ($x) {$x['id'] = 1; return $x; }, $response['six']['donnes_table_two']);
$response['six']['donnes_table_two'] = $array;
print_r('After:');
print_r($response);

您也可以这样做:

<?php
$str = <<<EOD
{
    "six": {
        "donnes_table_two": [
            {
                "denomination_de_vente": "value",
                "marques": "value"
            },
            {
                "denomination_de_vente": "value",
                "marques": "value"
            }
        ]
    }
}
EOD;

print '<pre>';
$response = json_decode($str, true);
print_r('Before:');
print_r($response);
$array = array_map(function ($x) {$x['id'] = 1; return $x; }, $response['six']['donnes_table_two']);
$response['six']['donnes_table_two'] = $array;
print_r('After:');
print_r($response);
只是另一种方法使用

演示

只是另一种方法使用


演示

您可以使用数组映射功能

 Array
 (
    [six] => Array
    (
        [donnes_table_two] => Array
            (
                [0] => Array
                    (
                        [id] => 1
                        [denomination_de_vente] => value
                        [marques] => value
                    )

                [1] => Array
                    (
                        [id] => 1
                        [denomination_de_vente] => value
                        [marques] => value
                    )

            )

    )

[seven] => Array
    (
        [donnes_table_two] => Array
            (
                [0] => Array
                    (
                        [id] => 1
                        [denomination_de_vente] => value
                        [marques] => value
                    )

                [1] => Array
                    (
                        [id] => 1
                        [denomination_de_vente] => value
                        [marques] => value
                    )

            )

    )
  )

您可以使用数组映射功能

 Array
 (
    [six] => Array
    (
        [donnes_table_two] => Array
            (
                [0] => Array
                    (
                        [id] => 1
                        [denomination_de_vente] => value
                        [marques] => value
                    )

                [1] => Array
                    (
                        [id] => 1
                        [denomination_de_vente] => value
                        [marques] => value
                    )

            )

    )

[seven] => Array
    (
        [donnes_table_two] => Array
            (
                [0] => Array
                    (
                        [id] => 1
                        [denomination_de_vente] => value
                        [marques] => value
                    )

                [1] => Array
                    (
                        [id] => 1
                        [denomination_de_vente] => value
                        [marques] => value
                    )

            )

    )
  )

到目前为止,您尝试了什么?1.
我可以不使用循环就完成它吗?
.No 2.
有没有PHP函数?
没有,PHP中没有任何函数可以不使用循环就完成它。您希望所有元素上都有id 1吗?对我来说没有意义…@niklesh有一个函数可以不使用循环就完成这样的工作。请检查@bansi:我也给出了解决方案我觉得它可以通过
str\u replace
一次完成,而不必按照OP的要求去访问每个元素
我可以不使用循环吗?
。但我仍然认为
数组\u walk
将访问每个元素。不会吗?如果我错了,请纠正我。到目前为止你做了什么?1.
我可以不使用循环吗?
。2.
不是吗这里有PHP函数吗?
没有,PHP中没有任何函数可以不循环地完成它。你想在所有元素上都使用id 1吗?对我来说没有意义…@niklesh有一个函数可以不循环地完成这类工作。检查@bansi:我也给出了解决方案,因为我觉得它可以通过
str_replace
一次完成,而不必访问每个元素正如OP问的那样,我可以不使用循环来做它吗?
。但我仍然认为
数组(u walk)
将进入每个元素。不会吗?如果我错了,请纠正我。他不想按照OP说的
循环来做而不使用循环
他不想按照OP说的
循环来做而不使用循环