我有一个名为$ pages的数组内容如下:
Array
(
[01-about-us] => Page Object
(
[_uri] => about-us
[_menuItem] => 01
[_visable] => 1
)
[02-contact] => Page Object
(
[_uri] => contact
[_menuItem] => 02
[_visable] => 1
)
[_sitemap] => Page Object
(
[_uri] => sitemap
[_menuItem] =>
[_visable] =>
)
[home] => Page Object
(
[_uri] => home
[_menuItem] =>
[_visable] => 1
)
)
是否有一种简单的方法来循环并获取属性的页面对象,即:
<?php foreach($pages->_visible() AS $p): ?>
<li> page </li>
<?php endforeach ?>
答案 0 :(得分:15)
没有。您必须使用if
:
foreach ($pages as $page) {
if ($page->_visible == 1) {
echo "<li>page</li>";
}
}
(注意你在数组中拼错了visible
,也许是拼写错误?)
答案 1 :(得分:6)
或者您可以使用PHP的array_filter
功能:
$pagesVisible = array_filter($pages, function($page) {
return (bool) $page->_visible;
});
foreach ($pagesVisible as $key => $page) {
print '<li>' . $key . '</li>';
}
或者简写为:
$filter = function($page) {
return (bool) $page->_visible;
};
foreach (array_filter($pages, $filter) as $key => $page) {
print '<li>' . $key . '</li>';
}
答案 2 :(得分:3)
您只需循环遍历pages数组并在循环内部访问对象属性,如:
<?php foreach($pages as $k => $p): ?>
<?php if ($p->_visable === 1): ?>
<li><?php echo $k; ?></li>
<?php endif; ?>
<?php endforeach; ?>
请注意,可见拼错了,但这就是你问题的方式