我有这种类型的数组我想打印这个数组如何在PHP中打印

时间:2018-03-26 13:24:03

标签: php

print_r($checksLists);

关于输出是这个

Array
(
[states] => Array
    (
        [0] => Array
            (
                [status] => up
                [timefrom] => 1516849684
                [timeto] => 1517396400
            )

        [1] => Array
            (
                [status] => down
                [timefrom] => 1516849564
                [timeto] => 1516849684
            )

        [2] => Array
            (
                [status] => up
                [timefrom] => 1515446404
                [timeto] => 1516849564
            )

        [3] => Array
            (
                [status] => unknown
                [timefrom] => 1515446224
                [timeto] => 1515446404
            )

        [4] => Array
            (
                [status] => up
                [timefrom] => 1512566104
                [timeto] => 1515446224
            )

        [5] => Array
            (
                [status] => down
                [timefrom] => 1512563104
                [timeto] => 1512566104
            )

        [6] => Array
            (
                [status] => up
                [timefrom] => 1512126000
                [timeto] => 1512563104
            )

    )

)

第一个问题

如何打印状态值

我是这样想的       echo $checksLists.states[1].status;

但我没有得到输出

第二个问题 从这个,我想打印新的数组只有像这样的状态值

    [0] => Array
        (
            [status] => up
            [timefrom] => 1515446404
            [timeto] => 1516849564
        )



    [1] => Array
        (
            [status] => up
            [timefrom] => 1512566104
            [timeto] => 1515446224
        )



    [2] => Array
        (
            [status] => up
            [timefrom] => 1512126000
            [timeto] => 1512563104
        )

2 个答案:

答案 0 :(得分:1)

对于你的第一个问题,也许你对javascript和php对象访问表示法感到困惑。要访问 PHP 中的objects,正确的表示法是->(箭头符号)和数组[](括号符号)。因为它只是一个多维的PHP数组。因此请像array一样使用[]这样对待它。

您刚刚使用.混淆了javascript版本对象访问权限。对于php dot(.),标志通常用于连接目的。

echo $checksLists['states'][1]['status'];

对于您的第二个问题,您可以尝试使用array_filter()

过滤掉值为up的数组
$filtered_array = array_filter($checksLists['states'], function ($var) {
    return ($var['status'] == 'up');
});

print '<pre>';
print_r($filtered_array);
print '</pre>';

答案 1 :(得分:0)

问题的第一部分是您需要正确的语法来访问多维数组:

$checksLists['states'][0]['status']

有了这个,您可以遍历$checklists['states']数组并打印出匹配项:

$newArray = [];

foreach($checklists['states'] as $id=>$attr) {
    if ($attr['status'] == 'up') {
        $newArray[] = $attr;
    }
}

print_r($newArray);

了解其工作原理后,请查看array_filter()以获得更短/更快的方式。