如果满足某些条件,如何增加json数据的值?

时间:2017-03-12 23:42:27

标签: php arrays json

我的json数据是这样的:

$json_data = '{"1": "1", "2": "1"}';

注意:

  

1 =明星

     

1 =给予明星1的用户数

     

2 =明星

     

1 =给予明星2的用户数

如果我有这样的变量:

$star = 1;

我希望$star的密钥中存在检查变量$json_data,而不是

如果存在,它将更新为:

$json_data = '{"1": "2", "2": "1"}';

因此,如果$star的密钥中存在$json_data,则会增加值

我试着这样:

<?php 
    $star = 1;
    $json_data = '{"1": "1", "2": "1"}';
    $array_data = json_decode($json_data, true);
    if(array_key_exists($star, $array_data)) {
        $value = $array_data[$star];
        if ($value !== false) {
            // update here
        }

    }
?>

我仍然感到困惑,如何更新

有没有人可以帮助我?

3 个答案:

答案 0 :(得分:1)

如果您希望所有内容都作为JSON数据中的字符串保留,我将使用此代码。我首先将变量转换为int,然后将其加1。然后我把它作为一个字符串。

static void SetExplicit(string file)
{
    var f = TagLib.File.Create(file);

    var tags = (TagLib.Mpeg4.AppleTag) f.GetTag(TagLib.TagTypes.Apple);

    TagLib.ByteVector customTagName = "rtng";
    TagLib.ByteVector customTagData = new byte[] { 1 };
    var customTagFlag = (UInt32)TagLib.Mpeg4.AppleDataBox.FlagType.ContainsData;

    tags.SetData(customTagName, customTagData, customTagFlag);

    f.Save();
}

答案 1 :(得分:0)

你可以使用isset()

if(isset($array_data[$star])) {
    $array_data[$star]++;
}else{
    $array_data[$star]=1;
}

答案 2 :(得分:0)

$star = 1;
$json_data = '{"1": "1", "2": "1"}';
$array_data = json_decode($json_data, true);
if(array_key_exists($star, $array_data)) {
    if (isset($array_data[$star]) AND $array_data[$star] !== false) {
        $array_data[$star] = 'change';
    }

}
$json_data = json_encode($array_data);

您还可以了解如何将变量作为参考传递,但这里不需要