如何在 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);
这段代码片段:
$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);