【问题标题】:Insert array into an json encoded array in PHP将数组插入到 PHP 中的 json 编码数组中
【发布时间】:2021-10-29 14:31:21
【问题描述】:

我有函数 retIKey(..):

function retIKey($text, $callback) {
    return json_encode([
        'inline_keyboard'=>[
            [
                ['text'=>"$text", 'callback_data'=>"$callback"]
            ]
        ],
    ]);
}

我有一些信息应该添加到这个数组中。我想使用 for 循环将 ['text'=>"sql1", 'callback_data'=>"sql1"] 添加到数组中。比如for循环之后的结果应该是这样的:

function retIKey($text, $callback) {
    return json_encode([
        'inline_keyboard'=>[
            [
                ['text'=>"$text", 'callback_data'=>"$callback"], ['text'=>"sql1", 'callback_data'=>"sql2"]
            ],
[
                ['text'=>"sql2", 'callback_data'=>"sal2"]
            ]
        ],
    ]);
}

我该怎么办?我该怎么做?

【问题讨论】:

  • 该函数的结果不是一个数组,而是一个恰好是 JSON 的文本块。如果要在函数之外操作数据,则不要将其编码为 JSON。将数据保留为数据,直到您有理由将其序列化为 JSON 或其他方式。
  • @Sammitch 我该怎么做?我使用了 array_unshift,但它不像我想要的那样工作

标签: php arrays


【解决方案1】:

您的函数返回经过 json 编码的数组。因此,之后要将值添加到函数外部的数组中,您必须先解码数组。添加值后,您可以根据需要再次编码。

它是这样工作的:

function retIKey($text, $callback)
{
    return json_encode([
        'inline_keyboard' => [
            [
                'text' => "$text",
                'callback_data' => "$callback"
            ]
        ]
    ]);
}

$jsonArray = retIKey('sql1', 'sql1');

$array = json_decode($jsonArray, true);
$array['inline_keyboard'][] = [
    'text' => 'sql2',
    'callback_data' => 'sql2'
];

$array 现在看起来像:

array (size=1)
  'inline_keyboard' => 
    array (size=2)
      0 => 
        array (size=2)
          'text' => string 'sql1' (length=4)
          'callback_data' => string 'sql1' (length=4)
      1 => 
        array (size=2)
          'text' => string 'sql2' (length=4)
          'callback_data' => string 'sql2' (length=4)

如果需要,您可以在之后再次对数组进行编码:

$jsonArray = json_encode($array);

【讨论】:

  • @imGoat 我的回答对你有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2023-03-12
相关资源
最近更新 更多