如何使用empty优化php if语句

s6fujrry  于 2023-01-12  发布在  PHP
关注(0)|答案(1)|浏览(98)

我想知道我如何才能完善这段代码:

<?php if( get_sub_field('which_call_to_action') == 'primary_cta' ):
$PopOrPage = get_field('page_or_pop_up', 'option');
$StandardOrAdvanced = get_field('secondary_more_options_cta', 'option');
$AddUrl = get_field('cta_page_url', 'option');
$TextOnButton = the_field('main_cta_text', 'option');?>
<?php echo '<div class="'. $StandardOrAdvanced .'"><a class="'. $PopOrPage .'" href="'. $AddUrl .'">' ;?>
    <?php echo $TextOnButton ;?>
    <?php echo '</a></div>';?>
<?php elseif ( get_sub_field('which_call_to_action') == 'secondary_cta' ):
$StandardOrAdvanced = get_field('secondary_more_options_cta', 'option');
$TextOnButton = get_field('secondary_cta_group_secondary_text', 'option');
$AddUrl = get_field('secondary_cta_group_secondary_url', 'option');?>
<?php echo '<div class="'. $StandardOrAdvanced .'"><a class="'. $PopOrPage .'" href="'. $AddUrl .'">' ;?>
    <?php echo $TextOnButton ;?>
    <?php echo '</a></div>';?>
<?php elseif ( get_sub_field('which_call_to_action') == 'tertiary_cta' ):
$StandardOrAdvanced = get_field('secondary_more_options_cta', 'option');
$TextOnButton = get_field('tertiary_cta_group_tertiary_text', 'option');
$AddUrl = get_field('tertiary_cta_group_tertiary_url', 'option');?>
<?php echo '<div class="'. $StandardOrAdvanced .'"><a class="'. $PopOrPage .'" href="'. $AddUrl .'">' ;?>
    <?php echo $TextOnButton ;?>
    <?php echo '</a></div>';?>
<?php endif; ?>

有没有办法可以不用重复下面的部分那么多次?

<?php echo '<div class="'. $StandardOrAdvanced .'"><a class="'. $PopOrPage .'" href="'. $AddUrl .'">' ;?>
    <?php echo $TextOnButton ;?>
    <?php echo '</a></div>';?>

我试过这个:

<?php if( get_sub_field('which_call_to_action') == 'primary_cta' ){
$PopOrPage = get_field('page_or_pop_up', 'option');
$StandardOrAdvanced = get_field('secondary_more_options_cta', 'option');
$AddUrl = get_field('cta_page_url', 'option');
$TextOnButton = the_field('main_cta_text', 'option');}

elseif ( get_sub_field('which_call_to_action') == 'secondary_cta' ){
$StandardOrAdvanced = get_field('secondary_more_options_cta', 'option');
$TextOnButton = get_field('secondary_cta_group_secondary_text', 'option');
$AddUrl = get_field('secondary_cta_group_secondary_url', 'option');}

elseif ( get_sub_field('which_call_to_action') == 'tertiary_cta' ){
$StandardOrAdvanced = get_field('secondary_more_options_cta', 'option');
$TextOnButton = get_field('tertiary_cta_group_tertiary_text', 'option');
$AddUrl = get_field('tertiary_cta_group_tertiary_url', 'option');}

echo '<div class="'. $StandardOrAdvanced .'"><a class="'. $PopOrPage .'" href="'. $AddUrl .'">' ;
    echo $TextOnButton ;
    echo '</a></div>';
endif; ?>

我希望它运行通过每个if statement和加载必要的变量和输出的html相应。唉,代码失败了

anauzrmj

anauzrmj1#

给予变量一些默认值,然后你只需要在if/else代码块中覆盖它们,这样你就可以把回显移到代码块的末尾。$StandardOrAdvanced在所有3个代码块中都是一样的,所以把它移到if/else代码块的前面或后面。

$PopOrPage = ''; // empty string or add your default value
$AddUrl = '';// empty string or add your default value
$StandardOrAdvanced = get_field('secondary_more_options_cta', 'option');

if(get_sub_field('which_call_to_action') == 'primary_cta'):
    $PopOrPage = get_field('page_or_pop_up', 'option');
    $AddUrl = get_field('cta_page_url', 'option');
    $TextOnButton = the_field('main_cta_text', 'option');
elseif(get_sub_field('which_call_to_action') == 'secondary_cta'):
    $TextOnButton = get_field('secondary_cta_group_secondary_text', 'option');
    $AddUrl = get_field('secondary_cta_group_secondary_url', 'option');
elseif(get_sub_field('which_call_to_action') == 'tertiary_cta'):
    $TextOnButton = get_field('tertiary_cta_group_tertiary_text', 'option');
    $AddUrl = get_field('tertiary_cta_group_tertiary_url', 'option');
endif;

echo '<div class="' . $StandardOrAdvanced . '"><a class="' . $PopOrPage . '" href="' . $AddUrl . '">';
echo $TextOnButton;
echo '</a></div>';

相关问题