如何设置Telegram内联按钮每行显示2个?附PHP代码
动态生成每行2个的Telegram内联按钮
你的现有代码是手动硬编码固定数量的按钮,无法适配数据库返回的任意数量数据。可以通过以下步骤实现动态生成:
- 将数据库数据转换为按钮结构数组:把每个
jonre值转换成Telegram要求的按钮格式 - 按每行2个分组:用
array_chunk函数把按钮数组分割成每2个元素一组的子数组,正好对应内联键盘的每行
修改后的完整代码:
// 从数据库获取数据 $jonres = []; while($row = $result->fetch_assoc()){ $jonres[] = $row['jonre']; } if (isset($update['callback_query'])) { // 生成按钮结构数组 $buttonArray = []; foreach($jonres as $item) { $buttonArray[] = [ "text" => $item, "callback_data" => $item ]; } // 按每行2个按钮分组 $inlineKeyboard = array_chunk($buttonArray, 2); // 发送编辑消息请求 MessageRequestJson("editMessageText", [ 'chat_id' => $callback_username, 'message_id' => $callback_messageId, 'text' => 'ali', 'reply_markup' => [ "inline_keyboard" => $inlineKeyboard ] ]); }
关键部分说明:
array_chunk函数:这个函数会把一维数组分割成指定长度的多维数组,这里设置为2,正好实现每行2个按钮的布局- 动态按钮生成:通过遍历数据库返回的所有
jonre值,自动生成对应的按钮,不管数据有多少条都能适配 - 奇数数据处理:如果数据库返回的数量是奇数,最后一行会自动只显示1个按钮,Telegram内联键盘支持这种布局
内容的提问来源于stack exchange,提问作者mehdi mehrani
相关产品推荐
相关产品推荐

