PHP使用false突破if/else速记
使用PHP 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 .=
$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;