2012-04-01 5 views
1

PHPには関数がありますが、問題は余分な||最後に私は望んでいない。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

ループは不要です!ただ、値のうち、JavaScriptの配列を作るためにjson_encodeを使用します。

<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> 
+2

非常に斬新な解決策!私はあなたにyonder upvoteをかける。 – Bojangles

0

が文字列にすべてを累積それをエコーする前に、その後、(RTRIMを使用)、それをエコー。

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

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]"

にかかわらず、配列の数サイズの。閉じる.'"'ビットを念頭に置いてください...

+0

私はこれ(またはそれの変形)を投稿しようとしていましたが、私は 'json_encode'がもっと簡単だと考えました。パフォーマンスのボトルネックになると、重大な間違いがあります:) – Ryan

+0

True、performance diff。電子の重量よりも小さいであろう。しかし、あなたの解は 'hide_card_code'関数のそれぞれの呼び出しで' Array'コンストラクターを暗黙的に呼び出します。これは最初に変数に格納しないでください。それは私がしたくないことのほんの一例ですが、そのようなものについてはOCDの告発を受けています。 :-) –

関連する問題