12

$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 ?>
4

3 に答える 3

23

いいえ。次を使用する必要がありますif

foreach ($pages as $page) {
    if ($page->_visible == 1) {
        echo "<li>page</li>";
    }
}

(配列のスペルミスにも注意してくださいvisible。おそらくタイプミスですか?)

于 2012-12-20T10:00:16.470 に答える
6

array_filterまたは、PHPの機能 を利用できます。

$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>';
}
于 2012-12-20T10:05:34.827 に答える
3

ページ配列をループし、ループ内で次のようなオブジェクト プロパティにアクセスするだけです。

<?php foreach($pages as $k => $p): ?>
   <?php if ($p->_visable === 1): ?>
   <li><?php echo $k; ?></li>
   <?php endif; ?>
<?php endforeach; ?>

visableのスペルが間違っていることに注意してください。

于 2012-12-20T10:03:38.413 に答える