PHP数组多维:foreach从确定级别开​​始

时间:2018-04-05 09:29:04

标签: php arrays multidimensional-array foreach

我有一个多维数组,如下所示:

Array
(

[results] => Array
    (
        [0] => Array
            (
                [hotel_code] => 15ad7a
                [checkout] => 2018-04-26
                [checkin] => 2018-04-24
                [destination_code] => 1c6e0
                [products] => Array

                .... etc ....

            )
         [1] => Array
            (
                [hotel_code] => 193c6c
                [checkout] => 2018-04-26
                [checkin] => 2018-04-24
                [destination_code] => 1c6e0
                [products] => Array

                .... etc ....
            )

想要创建一个简单的结果分页,一次从数组中取出15条记录,通过以下代码我可以恢复前15条记录。

$i = 0;
foreach($data['results'] as $key=>$val){
$i++;
$selez_hotel_code = '' . $val['hotel_code'] . '';
if($i == 15) break;
}

现在,如何从阵列中获取接下来的15个值? 我试图直接从记录15开始foreach,设置如下

$i = 0;
foreach($data['results'][14]['hotel_code'] as $val){
$i++;
$selez_hotel_code = '' . $val . '';
if($i == 15) break;
}

但它不起作用。

2 个答案:

答案 0 :(得分:3)

您可以使用for循环来指定开始和结束:

$start = 15 ;
$length = 15 ;
$max = count($data['results']);
for ($idx = $start; $idx < $start + $length && $idx < $max; $idx++) {
    $val = $data['results'][$idx]['hotel_code'] ;
    $selez_hotel_code = $val ;
}

请注意,我添加了一项验证,以避免循环结果的最大值($idx < $max)。

答案 1 :(得分:0)

您可以使用$_GET进行分页。只有一个for循环,如果设置则使用此参数,否则为0。像这样:

$page = isset($_GET['page']) ? intval($_GET['page']) : 0;
for ($i = $page; $i < ($page + 15); $i++) {
    // $data['results'][$i] . . .
}

点击“下一页”或您正在使用的任何内容时,请设置page参数