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
)
答案 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()
以获得更短/更快的方式。