在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>
如何停止额外的|| ?
答案 0 :(得分:7)
无需循环!只需使用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>
答案 1 :(得分:1)
$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";
}
答案 2 :(得分:1)
如果有一个简单的方法,为什么要让事情变得复杂? 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]"
无论数组的数量大小。请记住关闭.'"'
位......
答案 3 :(得分:0)
在回显之前将所有内容累积到一个字符串中,然后使用rtrim(),然后回显它。
答案 4 :(得分:0)
<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;
}
}