检查多个条件或php

iswrvxsc  于 2021-10-10  发布在  Java
关注(0)|答案(4)|浏览(351)

有没有更优雅的方法来编写具有多个or条件的if?目前,我的代码如下所示,但看起来并不有趣。

if ( has_block( 'cgb/block-imoney-blocks' ) || has_block( 'cgb/block-idh-affiliates' ) || has_block( 'cgb/block-idh-best-summary') || has_block('cgb/block-idh-highlights')) {
    echo 'Value Found';
}
qvtsj1bj

qvtsj1bj1#

如果有很多块,则通过如下方式迭代数组更具可读性:

<?php
$blocks = ['cgb/block-imoney-blocks', 'cgb/block-idh-affiliates', 'cgb/block-idh-best-summary', 'cgb/block-idh-highlights'];

foreach ($blocks as $block) {
    if (has_block($block)) {
        echo 'Value Found';
        break;
    }
}

这个 break 添加的目的是防止多次执行if语句,但严格说来不是执行。

neskvpey

neskvpey2#

您可以将条件放在函数中,并将值传递到数组中。

$blocks_array = array(
     'cgb/block-imoney-blocks',
     'cgb/block-idh-affiliates',
     'cgb/block-idh-best-summary',
     'cgb/block-idh-highlights'
);

if(contains_block($block_array)){
    echo 'Value Found';
}

function contains_block($block_array){
    foreach ($block_array => $block){
        if (has_block($block)){
            return true;
         }
    }
    return false:
}
sxpgvts3

sxpgvts33#

在我看来,做一个 has() 你可以重用的函数或类似的函数,那么不管行有多长,你都已经抽象了它。这相当于 some (即数组中的某些值应为true)。

function has($blocks) {
    return array_reduce($blocks, fn($acc, $cur) => $acc || has_block($cur), false);
}

if (has([
  'cgb/block-imoney-blocks', 
  'cgb/block-idh-affiliates', 
  'cgb/block-idh-affiliates'
])) echo 'Value Found';
lbsnaicq

lbsnaicq4#

有更好的格式?

if ( has_block( 'cgb/block-imoney-blocks' ) 
  || has_block( 'cgb/block-idh-affiliates' ) 
  || has_block( 'cgb/block-idh-best-summary') 
  || has_block( 'cgb/block-idh-highlights')
  ) {
    echo 'Value Found';
}

相关问题