PHP使用false突破if/else速记

PHP使用false突破if/else速记,php,Php,使用PHP if/else速记,并考虑这是否可以接受: $pages = get_children(array( 'post_parent' => 49, 'post_type' => 'page', 'post_status' => 'publish', )); $html = ''; $first = true; $first_id = null; foreach ($pages as $page) : $html .=

使用PHP if/else速记,并考虑这是否可以接受:

$pages = get_children(array(
    'post_parent'   =>  49,
    'post_type'     => 'page',
    'post_status'   => 'publish',
));

$html = '';
$first = true;
$first_id = null;

foreach ($pages as $page) :
    $html .= '<li class=""><a href="" class="js-load-sub-nav' . ( $first ? " is-active" : "" ) . '" data-id="' . $page->ID . '" data-action="af_contact_nav_child_pages">' . $page->post_title . '</a></li>';
    ( $first ? $first_id = $page->ID : false );
    $first = false;
endforeach;

这项技术很有名,叫做三元运算符。我不认为它难看:)

如果切换逻辑,甚至可以忽略
false

!$first ?: $first_id = $page->ID;

请注意,只有
后面的部分可以保留为空。

@Fred ii-我做了…似乎工作正常,但这是一种丑陋的技术吗?有更好的方法吗?似乎毫无意义。为什么不先做一个if($first)?我看不出有什么问题。这是个人喜好;当然当我发现三元运算符时,我认为这是自切片面包以来最好的事情;-)@Kolby我只是在玩速记,我认为更好的解决方案是($first)$first\u id=$page->id;还是一行,没有任何不必要的代码。@SamHolguin谢谢!只有第一部分可以保留为空。。。我不知道(也不知道为什么)。。。
!$first ?: $first_id = $page->ID;