You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP多维数组:从指定层级遍历并实现结果分页

PHP 多维数组分页与指定层级遍历方案

首先咱们先搞定分页功能,再实现指定层级的遍历。假设你用的是PHP,下面是具体的落地步骤:

1. 分页功能实现

先定义分页核心参数,再对results数组进行切片,得到当前页要展示的数据:

// 你的原始多维数组
$originalArray = [
    'results' => [
        ['hotel_code' => '15ad7a', 'checkout' => '2018-04-26', 'checkin' => '2018-04-24', 'destination_code' => '1c6e0', 'products' => [...]],
        ['hotel_code' => '193c6c', 'checkout' => '2018-04-26', 'checkin' => '2018-04-24', 'destination_code' => '1c6e0', 'products' => [...]],
        // 更多酒店数据...
    ]
];

// 分页参数配置
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 从URL取当前页码,默认第1页
$itemsPerPage = 2; // 每页显示2条,可按需调整

// 提取所有结果数据
$allResults = $originalArray['results'];
$totalItems = count($allResults);
$totalPages = ceil($totalItems / $itemsPerPage); // 计算总页数

// 确保页码在有效范围
$currentPage = max(1, min($currentPage, $totalPages));

// 切片数组得到当前页数据
$startIndex = ($currentPage - 1) * $itemsPerPage;
$paginatedResults = array_slice($allResults, $startIndex, $itemsPerPage);

现在$paginatedResults就是当前页的酒店数据集合了。

2. 指定层级的foreach遍历

根据你想开始的层级,这里给两种常用场景的示例:

示例1:从酒店层级开始遍历

遍历当前页的每一家酒店,同时可嵌套遍历其产品:

echo "当前第 {$currentPage} 页,共 {$totalPages} 页<br>";
foreach ($paginatedResults as $hotel) {
    echo "酒店编码:{$hotel['hotel_code']}<br>";
    echo "入住/退房:{$hotel['checkin']} → {$hotel['checkout']}<br>";
    
    // 深入到products层级遍历
    echo "该酒店产品列表:<br>";
    foreach ($hotel['products'] as $product) {
        // 替换成你实际的产品字段,比如product_code、price等
        echo "- {$product['product_code']}:¥{$product['price']}<br>";
    }
    echo "------------------------<br>";
}

示例2:直接从products层级开始遍历

如果想跳过酒店信息,直接遍历当前页所有酒店的产品:

echo "当前页所有酒店产品汇总:<br>";
foreach ($paginatedResults as $hotel) {
    foreach ($hotel['products'] as $product) {
        echo "产品编码:{$product['product_code']},所属酒店:{$hotel['hotel_code']}<br>";
    }
}

3. 可选:分页导航栏

为了让用户切换页面,添加简单的分页链接:

echo "<div style='margin-top:20px;'>";
if ($currentPage > 1) {
    echo "<a href='?page=" . ($currentPage - 1) . "'>上一页</a> ";
}
for ($i = 1; $i <= $totalPages; $i++) {
    $activeStyle = ($i == $currentPage) ? "style='color:red;font-weight:bold;'" : "";
    echo "<a href='?page={$i}' {$activeStyle}>{$i}</a> ";
}
if ($currentPage < $totalPages) {
    echo "<a href='?page=" . ($currentPage + 1) . "'>下一页</a>";
}
echo "</div>";

这样一套下来,既实现了分页,又能灵活从指定层级开始遍历你的多维数组啦。

内容的提问来源于stack exchange,提问作者Idea Project

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:02:55