在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;
}
}