首页 > 解决方案 > 循环限制到 PHP 中 Telegram 的“inline_keyboard”

问题描述

我正在尝试创建一个数字在 0 到 99 之间的 inline_keyboard。但是循环(一个 for 结构)只显示从 0 到 7。

我的代码:

$data = http_build_query([
        'text' => 'Selecciona un numero:',
        'chat_id' => $update['message']['from']['id']
]);

$keyboard = array();

for($i=0;$i<100;$i++) {
    array_push($keyboard,array("text" => $i,"callback_data" => $i));
}

$resultado = json_encode(['inline_keyboard'=>array($keyboard)]);

// Send keyboard
file_get_contents($botAPI . "/sendMessage?".$data."&reply_markup=".$resultado);

这是我智能手机的截图:

截屏

为什么循环只数到七?

标签: phpapitelegram

解决方案


行。Telegram 每行限制八个按钮。然后,我们在数组中每八个按钮添加行。我的工作代码是:

    $keyboard = array();
    $linea = array();

    for($j=0;$j<100;$j++) {
        array_push($linea,array("text" => $j,"callback_data" => $j));
        $contadorFilas++;       
        if($contadorFilas==6) {
            array_push($keyboard,$linea);           
            $linea = array();           
            $contadorFilas = 0;
        }
    }
        
    array_push($keyboard,$linea);           
    $resultado = json_encode(['inline_keyboard'=>$keyboard]);

推荐阅读