如何在 foreach 循环中生成嵌套数组以产生相同的结果?电报 PHP 机器人

How can I generate a nested array in foreach loop to produce the same result? Telegram PHP Bot

这段代码片段:

$inline_keyboard = new InlineKeyboard([
    ['text' => 'valueA', 'callback_data' => 'valueA'],
], [
    ['text' => 'valueB', 'callback_data' => 'valueB'],
]);

在我的电报机器人中生成以下内联键盘:

到目前为止一切顺利...但是我不想对值进行硬编码,而是想使用数组(数据库查询)中的值生成相同的输出。

我试过这样的东西:

$dbValues = array("valueA", "valueB");

foreach ($dbValues as $value)
{
    $inline_keyboard .= new InlineKeyboard([
        ['text' => "$value", 'callback_data' => "$value"],
    ]);
}

但这失败了...我想是因为我不必在每次迭代中 运行 一个 "new" 实例?

感谢您的帮助!

您不能连接字符串之类的对象。您可以采用另一种方式,构建数组,然后将数组发送到 InlineKeyboard

$dbValues = array("valueA", "valueB");
foreach ($dbValues as $value)
{
    $inline_keyboard[] = [['text' => "$value", 'callback_data' => "$value"]];
}

$inline_keyboard = new InlineKeyboard(...$inline_keyboard);

更多详细信息请参阅 php-telegram-bot wiki 中的 "New Keyboard structure and how to pass dynamic arguments"

要获得水平键盘,您可以使用以下代码片段:

$dbValues = array("valueA", "valueB");
foreach ($dbValues as $value)
{
    $inline_keyboard[] = ['text' => "$value", 'callback_data' => "$value"];
}

$inline_keyboard = new InlineKeyboard($inline_keyboard);