PHP-如何阻止函数在末尾打印额外的||


PHP - how can I stop a function from printing an extra || at the end?

在PHP中,我有一个函数,问题是它会在最后输出一个我不想要的额外||。

<script type="text/javascript">
function hide_card_code() {
  var payment_source=document.getElementById('payment_source');
  if(
    <?
    forEach($result_cards as $key => $value) {
      echo "payment_source.value=='$value' || 'n";
    }
    ?>
    ) {
    //do stuff...
    return true;
  }
}
</script>

它将输出以下HTML。请注意结尾处多余的||。

<script type="text/javascript">
function hide_card_code() {
  var payment_source=document.getElementById('payment_source');
  if(
    payment_source.value=='23' || 
    payment_source.value=='24' || 
    payment_source.value=='25' || 
    ) {
    //do stuff...
    return true;
  }
}
</script>

如何停止额外的||?

不需要循环!只需使用json_encode由以下值组成JavaScript数组:

<script type="text/javascript">
function hide_card_code() {
    var payment_source = document.getElementById('payment_source');
    if(<?= json_encode(array_values($result_cards)) ?>.indexOf(payment_source.value) > -1) {
        // do stuff...
        return true;
    }
}
</script>
 $i=0;
 forEach($result_cards as $key => $value) {
   if($i == 0){
     echo "payment_source.value=='$value' 'n";
     $i++;
   }
   else
     echo " || payment_source.value=='$value' 'n";
}

如果有简单的方法,为什么要让事情变得复杂?json_encode很慢,循环很傻:为什么不像这样字符串数组:

echo 'payment_source.value=="'.implode('" || payment_source.value=="',array_values($array)).'"';

回波:payment_source.value=="[val1]" || payment_source.value=="[val2]" || payment_source.value=="[val3]"

而与阵列的数目大小无关。请记住最后的.'"'位。。。

在回显之前将所有内容累积到字符串中,然后使用rtrim(),然后回显。

<script type="text/javascript">
function hide_card_code() {
  var payment_source=document.getElementById('payment_source');
  if(<?
      echo 'payment_source.value==' , 
      implode(' || payment_source.value==', $result_cards);
  ?>) {
    //do stuff...
    return true;
  }
}