Php 电报机器人-将按钮移动到新行

Php 电报机器人-将按钮移动到新行,php,bots,telegram,telegram-bot,Php,Bots,Telegram,Telegram Bot,如何使按钮在一列中,而不是在一行中。示例图像,如我所需: [点击图片][1] function sendInlineKeyboard($id_chat, $text, $array) { $keyboard = array("inline_keyboard" => array($array)); $toSend = array('method' => 'sendMessage', 'chat_id' => $id_chat, 'text' => $te

如何使按钮在一列中,而不是在一行中。示例图像,如我所需: [点击图片][1]

function sendInlineKeyboard($id_chat, $text, $array)
{
 $keyboard = array("inline_keyboard" => array($array));

        $toSend = array('method' => 'sendMessage', 'chat_id' => $id_chat, 'text' => $text, 'resize_keyboard' => true, 'reply_markup' => $keyboard);
        isset($mark) ? $toSend['parse_mode'] = $mark : '';
        isset($id_message) ? $toSend['reply_to_message_id'] = $id_message : '';     
        $ch = curl_init(API_URL);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($toSend));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
        $a = curl_exec($ch);
        return json_decode($a, true);           
}

$result = $mysqli->query("SELECT * FROM `test`");
while ($row = $result->fetch_assoc()) {             
            $array[] = array('text' => $row['city'], 'callback_data' => $id);
sendInlineKeyboard($user_id, 'String', $array);
}
不工作。有关
0stone0
的答案:

$keyboard = [
    'inline_keyboard' => [
        [
            ['text' => 'Button 1', 'callback_data' => 'someString'],
            ['text' => 'Button 2', 'callback_data' => 'someString', 'text' => 'Button 3', 'callback_data' => 'someString', 'text' => 'Button 4', 'callback_data' => 'someString'],
            ['text' => 'Button 5', 'callback_data' => 'someString']
        ]
    ]
];
$toSend = array('method' => 'sendMessage', 'chat_id' => $id_chat, 'text' => "Test", 'resize_keyboard' => true, 'reply_markup' => $keyboard);

电报将每个数组读取为一行。 如果希望在一行中有多个按钮,请将它们添加到数组中:

$keyboard = [
    "inline_keyboard" => [
        [
            [ "B~1" ],
            [ "B~2" ]
        ],
        [
            [ "B~3" ],
        ]
    ]
];
由于您的函数获得了用作键盘的
数组
变量,“错误”位于其他位置

如果需要进一步帮助,请使用调用
sendInlineKeyboard
功能的代码编辑页面


编辑: 我举了一个关于数组的小例子

$keyboard = [
    "inline_keyboard" => [
        [
            [
                "text" => "B~1",
                "callback_data" => "myCallbackData"
            ],
            [
                "text" => "B~2",
                "callback_data" => "myCallbackData"
            ]
        ],
        [
            [
                "text" => "B~3",
                "callback_data" => "myCallbackData"
            ]
        ]
    ]
];


$url = "https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<MY-ID>&text=<TEXT>&reply_markup=" . json_encode($keyboard);

$keyboard=[
“内联键盘”=>[
[
[
“文本”=>“B~1”,
“回调_数据”=>“myCallbackData”
],
[
“文本”=>“B~2”,
“回调_数据”=>“myCallbackData”
]
],
[
[
“文本”=>“B~3”,
“回调_数据”=>“myCallbackData”
]
]
]
];
$url=”https://api.telegram.org/bot/sendMessage?chat_id=&text=&reply_markup=" . json_编码($键盘);


编辑2

您要求的是“全”宽按钮。您提供的屏幕截图显示了2个按钮,每行1个。如果您使用正确的客户端,将使用按钮的全屏宽度,则我上面的示例也会产生相同的结果。第一个屏幕截图来自我的telegram mac os客户端,使用旧版本,相同的按钮如下所示:
因此,您使用的客户端只是显示小按钮,这不是您可以管理的。(使用其他客户端除外)

不工作。我只需要遵循这个示例,这样按钮就可以用列分隔,而按钮2和3就不会显示。截图:再次查看帖子。我编辑了它并为您编写了代码。在编写一个小示例时,我发现我错过了第二个数组。请参阅更新的答案。我希望它能帮助你;)感谢但是请告诉我如何制作屏幕截图中的按钮的全尺寸?您可以根据我的需要编辑您的答案。添加了更多信息,如果我有任何帮助,请升级投票/接受我的答案;)