【问题标题】:PHP array multidimensional: foreach starting from determinate levelPHP数组多维:从确定级别开​​始的foreach
【发布时间】:2018-04-05 09:29:03
【问题描述】:

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

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;
}

但它不起作用。

【问题讨论】:

  • 这种情况最好使用for loop
  • 好的。但是我不知道如何确定循环必须从数组的第 14 级开始。
  • 您必须从 UI 发送开始计数,您将通过它来确定从哪里开始循环

标签: php arrays multidimensional-array foreach


【解决方案1】:

您可以使用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 &lt; $max)。

【讨论】:

  • 完美!通过根据我的需要更改代码,它可以完美运行。非常感谢。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2015-08-13
    • 2012-05-01
    • 1970-01-01
    相关资源
    最近更新 更多