Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中为JSON对象数组设置值_Php_Json - Fatal编程技术网

在PHP中为JSON对象数组设置值

在PHP中为JSON对象数组设置值,php,json,Php,Json,我想使用PHP为文本对象内的文本数组设置一个字符串值,该文本对象位于fulfillmentMessages JSON数组内。 我目前正在尝试使用此代码,但失败了 $response->fulfillmentMessages[text]->text = "Hello "; echo json_encode($response); 我得到的JSON是: { "responseId": "b19f0045-830e-4d12-a57e-07cdfd55f", "queryResu

我想使用PHP为文本对象内的文本数组设置一个字符串值,该文本对象位于fulfillmentMessages JSON数组内。 我目前正在尝试使用此代码,但失败了

$response->fulfillmentMessages[text]->text = "Hello ";
echo json_encode($response);
我得到的JSON是:

{
  "responseId": "b19f0045-830e-4d12-a57e-07cdfd55f",
  "queryResult": {
    "queryText": "yes",
    "action": "send.first.question",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            ""
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/quizbot-90a24/agent/sessions/9c08dfd274-7ece-19fe-c984-f5cd5ef135c7/contexts/expressname-followup",
        "lifespanCount": 1,
        "parameters": {
          "userName": "saliya",
          "userName.original": "saliya"
        }
      },
      {
        "name": "projects/quizbot-90a24/agent/sessions/9c08fdvfsd4-7ece-19fe-c984-f5cd5ef135c7/contexts/sessionusername",
        "lifespanCount": 4,
        "parameters": {
          "userName": "saliya",
          "userName.original": "saliya"
        }
      }
    ],
    "intent": {
      "name": "projects/quizbot-90agd24/agent/intents/063ed465-0ca1-4d94-bf7c-5b7ac4c31f6f",
      "displayName": "expressName - yes"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {
      "end_conversation": true
    },
    "languageCode": "en"
  }
}
这是我打算得出的结果:

"fulfillmentMessages": [
  {
    "text": {
      "text": [
        "Hello"
      ]
    }
  }

你的压痕使我感到一阵震惊。这会奏效的

$response->queryResult->fulfillmentMessages[0]->text->text[0] = "Hello";

我没有注意到fulfillmentMessages是queryResult的属性。

您试图操作嵌套对象和数组中的数组项,因此需要将其更改为

$response->queryResult->fulfillmentMessages[0]->text->text[0]=你好

例如:


这是您试图操作的json,还是您尝试操作失败的json结果?@LawrenceRone No仍然没有绑定字符串。@难以置信,这就是我试图操作的json。如您所见,文本数组为空。我更新了你能理解的问题。是的,很抱歉添加查询结果。我错过了那一点,答案如下。呵呵。。。这就是为什么适当的缩进总是有用的:我想你得到了答案,不是吗?别忘了接受答案。@LawrenceCherone我编辑了原文,所以现在没人知道我们在说什么了,哈哈
<?php
$response = json_decode('{
    "responseId": "b19f0045-830e-4d12-a57e-07cdfd55f",
    "queryResult": {
        "queryText": "yes",
        "action": "send.first.question",
        "parameters": {},
        "allRequiredParamsPresent": true,
        "fulfillmentMessages": [{
            "text": {
                "text": [
                    ""
                ]
            }
        }]
    }
}');

$response->queryResult->fulfillmentMessages[0]->text->text[0] = "Hello";

print_r($response);
stdClass Object
(
    [responseId] => b19f0045-830e-4d12-a57e-07cdfd55f
    [queryResult] => stdClass Object
        (
            [queryText] => yes
            [action] => send.first.question
            [parameters] => stdClass Object
                (
                )

            [allRequiredParamsPresent] => 1
            [fulfillmentMessages] => Array
                (
                    [0] => stdClass Object
                        (
                            [text] => stdClass Object
                                (
                                    [text] => Array
                                        (
                                            [0] => Hello
                                        )

                                )

                        )

                )

        )

)