如果使用三元运算符在回声中的语句

时间:2015-12-01 19:02:06

标签: php if-statement echo ternary-operator

我有以下echo语句:

echo '<li><a href="'. esc_url(add_query_arg( 'booking-id', $the_query->post->ID, site_url( '/pay-deposit/' ) )) .'">Pay deposit</a></li>';

我想在参数= 1

时将“禁用”类添加到链接中

以下是我尝试使用三元运算符

    $is_deposit_paid = get_post_meta( $the_query->post->ID, 'deposit_paid', true );
    echo '<li><a '.( $is_deposit_paid = 1) ? "disabled" .' href="'. esc_url(add_query_arg( 'booking-id', $the_query->post->ID, site_url( '/pay-deposit/' ) )) .'">Pay deposit</a></li>';

但是这会产生语法错误。我该怎么写出来呢?

2 个答案:

答案 0 :(得分:3)

有三个问题需要解决:

  • 三元运算符需要... 3个参数(惊喜!),所以在第二个之后,你需要在:的情况下添加else和你想要的字符串。

  • 在构建字符串之前应用点运算符之前,应将整个三元表达式放在括号中(而不是条件)。

  • 您需要进行比较,而不是分配(==代替=

所以这样做:

$is_deposit_paid = get_post_meta( $the_query->post->ID, 'deposit_paid', true );
echo '<li><a '.( $is_deposit_paid == 1  ? "disabled" : "") . 
    ' href="'. esc_url(add_query_arg( 'booking-id', $the_query->post->ID, 
        site_url( '/pay-deposit/' ) )) . 
    '">Pay deposit</a></li>';

答案 1 :(得分:1)

在函数调用之后立即使用变量,类被“禁用”或没有(“”):

$is_deposit_paid = get_post_meta( $the_query->post->ID, 'deposit_paid', true );
$class = ($is_deposit_paid)?"disabled":"";
echo "<li><a $class href='". esc_url(add_query_arg( 'booking-id', $the_query->post->ID, site_url( '/pay-deposit/' ) )) ."'>Pay deposit</a></li>";

如果您只需要课程,您甚至可以立即检查函数调用:

$class = (get_post_meta( $the_query->post->ID, 'deposit_paid', true ))?"disabled":"";