NULLチェックを使用してif / elseステートメントを簡素化します -- php フィールド と if-statement フィールド 関連 問題

Simplify an If/Else statement with null checks












1
vote

問題

日本語

2つの値をまとめて連結するif / elseステートメントを単純化する方法は、変数を使用する前にNULL値をチェックします。

例えば:

<事前> <コード> if (isset($A,$B)) { $C = $A . $B; } elseif(isset($A)) { $C = $A; } elseif(isset($B)) { $C = $B; } $B $B を連結する前に

NULL ではないことを確認する必要があります。どちらも値を含める場合は、変数 span0 に連結を割り当てたいです。どちらの値がNULLの場合は、 span1 に割り当てられている値が1つだけです。

上記は2つの変数しかない場合は問題がありますが、3番目の変数 span2 が追加され、 span3 に連結してnullをチェックしてください。それから私はABD、次にAB、次にBD、次にB、次にB、次にD、次にDをチェックする必要があるでしょう。

では、コードを簡素化し、必要に応じて将来より多くの変数を追加することができますか?

英語

I'd like a way to simplify an if/else statement that concatenates two values together, but also checks for null values before using the variables.

For example:

if (isset($A,$B)) {   $C = $A . $B; } elseif(isset($A)) {   $C = $A; } elseif(isset($B)) {   $C = $B; } 

Before concatenating $A with $B I need to make sure neither are NULL. If they both contain a value, then I want to assign the concatenation to the variable $C. If either value is null, then I want just one value assigned to $C.

The above works fine when I only have two variables, but what if a third variable $D were added and I needed to concatenate into $C and still check for nulls. Then I would need to check first for ABD, then AB, then BD, then A, then B, then D. It will get really unruly.

So how can I simplify the code and allow for more variables to be added in the future if necessary?

</div
     
   
   

回答リスト

4
 
vote
vote
ベストアンサー
 

次の方法についてはどうですか:

<事前> <コード> <?php $a=NULL; $b="hello "; $c=NULL; $d="world "; $all = implode(array($a,$b,$c,$d)); echo $all; ?>

このプリント

<事前> <コード> hello world

エラーなしで。それは@ wor10ckが作ったコメントの実装です - しかし、彼は完全な答え/例でフォローアップされていなかった、そして私は彼の提案は浮遊する価値があると思いました。

edit コメントを読みません - @kevenが

を使って終わった <事前> <コード> $result = implode(array_filter($array));

は、アレイ内のヌル要素を取り外すための素晴らしい堅牢な方法です。

 

How about the following:

<?php   $a=NULL;   $b="hello ";   $c=NULL;   $d="world ";   $all = implode(array($a,$b,$c,$d));   echo $all; ?> 

This prints

hello world 

without any errors. It is an implementation of the comment that @wor10ck made - but he didn't seem to follow up with a full answer / example and I thought his suggestion was worth fleshing out.

EDIT for people who don't read comments - @Keven ended up using

$result = implode(array_filter($array)); 

which is a nice robust way to remove the NULL elements in the array.

</div
 
 
       
       
2
 
vote
<事前> <コード> $C = (isset($A) ? $A : '') . (isset($B) ? $B : '') . (isset($D) ? $D : '');
 
$C = (isset($A) ? $A : '') . (isset($B) ? $B : '') . (isset($D) ? $D : ''); 
</div
 
 
2
 
vote

あなたかもしれませんこの便利な

を見つける <事前> <コード> $C = ""; $C .= (isset($A) ? $A : "").(isset($B) ? $B : "");

Question Mark operatorは、ステートメントがtrueの場合、シンボルの前に左の部分を返します。 hoeeher i ブロックがより最適化されている場合は、を考えています。

 

You might find this usefull

$C = ""; $C .= (isset($A) ? $A : "").(isset($B) ? $B : ""); 

The question mark operator returns the left part before the : symbol if the statement is true, and right if false. Hoever i think that nesting statements in if block is more optimised.

</div
 
 
0
 
vote
<事前> <コード> <?php // I assume $res is the variable containing the result of the concatenations $res = ''; if(isset($a)) $res .= $a; if(isset($b)) $res .= $b; if(isset($c)) $res .= $c; // ...
 
<?php // I assume $res is the variable containing the result of the concatenations $res = '';  if(isset($a))   $res .= $a; if(isset($b))   $res .= $b; if(isset($c))   $res .= $c; // ... 
</div
 
 
0
 
vote
<事前> <コード> $A = 'a'; $B = 'b'; $C = ''; $C .= isset($A) ? $A : ''; $C .= isset($B) ? $B : ''; $C .= isset($D) ? $D : ''; echo $C;
 
$A = 'a'; $B = 'b';      $C = ''; $C .= isset($A) ? $A : ''; $C .= isset($B) ? $B : ''; $C .= isset($D) ? $D : '';  echo $C; 
</div
 
 

関連する質問

100  IIF()とIFのパフォーマンス差  ( Performance difference between iif and if ) 
Visual Basicでは、<コード> If ステートメントの代わりに<コード> IIf 機能を使用する場合の性能差がありますか? ...

1  vba-ステートメントの場合 - エラー10  ( Vba nested if statements error 10 ) 
私の単純なVBAコードに問題があります。 ステートメント(セルに含める必要がある場合)は、複数のネストされたIFステートメント(セルに含める必要があります)がありますが、1004エラーが発生しました - アプリケーション定義またはオブジェクトエラーです。 問題...

0  シリーズの真理値はあいまいです。このエラーを解決する方法[複製]  ( The truth value of a series is ambiguous how do i fix this error ) 
この質問はすでにここで回答を持っています シリーズの真理値はあいまいです。 a.Empty、a.bool()、a.item()、a.any()またはa.all()を使用してください。 ...

-2  Python "Stack Overflow"(ステートメントの場合は104)。 DEF(x)コードを最適化するための唯一の解決策はありますか?  ( Python stack overflow 104 if statements is defx the only solution to opti ) 
今日は、パスディレクトリ名でファイルをチェックしようとしました。 以前は104の場合は104の場合は作成しようとしました。 このオーバーフローエラーを廃棄する方法 より具体的な質問:DEF(X)は、Pythonでそのような場合を最適化するための唯一の解決策を...

0  jQuery "またはIF"ステートメント  ( Jquery or if statement ) 
コンテナに無効なフォームフィールドがあるかどうかを確認する関数があります。それが特定のコンテナを示すリンクにある場合は、「Haserrors」クラスが追加されています。 <事前> <コード> function treatFormLinks () { i...

0  明示的または暗黙の実行制御ステートメントの使用  ( Explicit or implicit execution control statement use ) 
私は時々を使う <事前> <コード> SetWindowRgn1 他の時代を使う <事前> <コード> SetWindowRgn2 2人は同等です、私は知っていますが、私はどちらが最高であるかどうかわからない。 ブレーキや続行などの他の実行制御ステートメ...

-1  Excelのフォーミュラの場合は、複雑なものをデバッグできますか?  ( How can i debug my complex if excel formula ) 
私は学校の先生で、私の学校の評価システムを開発しています。この式を修正するためにどうすればいいですか? <コード> =IF(H3="SUR",IF(Subject!C3<2.7,"Not on track",IF(Subject!C3<=3.29,"On t...

31  JavaScript - DIVに単語が含まれているか確認してください。  ( Javascript check if div contains a word ) 
DIVに特定の単語が含まれているかどうかを確認できますか? <事前> <コード> var divs= document.getElementsByTagName('div'); for (var i = 0, len = divs.length; i < l...

3  ステートメントスピードの場合jQuery / JavaScript  ( Jquery javascript if statement speed ) 
与えられた: <事前> <コード> var isIE = $.browser.msie && !$.support.opacity, isIE6 = isIE && $.browser.version < 7; どちらが速くなります: <事前> <コード...

100  ASPXページの場合  ( If statement in aspx page ) 
私のサイトに基本的なIF文を書いて、変数がtrueに設定されているかどうかに応じて項目1または項目2のどちらかを表示するように書いてください。 私は.NETには慣れていないため、ASPXページで作業するIFステートメントを取得する方法の基本的な構造で少しヘルプ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有