使用corephp在USSD代码中实现分页



我正在编写一个显示菜单的USSD代码。但是,这些菜单不能全部显示在手机屏幕上。菜单是从数据库中动态提取的,所以我想显示前4个菜单,如下所示;

1. coconut
2. mango
3. pineapple
4. Pear
5. Melon
6. Banana```
```This is how I want it
First Menu 
1. coconut
2. mango
3. pineapple
99. Next
second menu
4. Pear
5. Melon
6. Banana
00. Back

如果我在此数组中回显菜单。(或从数据库(

$menu = array("cocnut", "mango", "Tpineapple", "pear","melon","Banana");
foreach($menu as $menu){
echo $menu;
}

根据您的问题,实际上每页显示3个项目,以及用于处理导航的下一个和上一个菜单项。要实现这一点,您需要在服务器上存储用户选择的索引。

因此,对于解决方案,我将代码分为3个函数。

要运行解决方案,请参阅测试用例。

寻呼

该函数接受用户的输入和每个请求保存在服务器上的当前索引。

function pagination($input, $currentIndex)
{
$menu = array("Coconut", "Mango", "Pineapple", "Pear","Melon","Banana");
$pages =  array_chunk($menu, 3); // Split array into chunks of 3 items
$index = $currentIndex; // Current Index Must To Stored Upon Every USSD Request in your database or session.
if($input == 99)
{
$index++;
displayMenu($pages[$index], $index);
}
else if($input == 00)
{
$index--;
displayMenu($pages[$index], $index);
}
else if($input != "")
{
selectItem($input, $pages[$index]);
}
else
{
displayMenu($pages[$index], $index);
}
}

显示菜单

function displayMenu($items, $index)
{
//Show Menu
echo "Page ".($index+1)."<br>";
foreach($items as $key => $item)
{
echo ($key + 1).'. '.$item."<br>";
}
}

选择项目

function selectItem($input, $menu)
{
if(array_key_exists(($input-1), $menu))
{
echo "Selected Item: " . $menu[($input-1)];
}
else
{
echo "Invalid Selection";
}
}

测试用例

echo pagination("", 0)."<br>"."<br>";
echo pagination(99, 0)."<br>"."<br>";
echo pagination(2, 0)."<br>"."<br>";
echo pagination(3, 1)."<br>"."<br>";
echo pagination(00, 1)."<br>"."<br>";
echo pagination(00, 2)."<br>"."<br>";

最新更新