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
相关产品推荐
相关产品推荐

