2016-08-30 11 views
2

私は、boolまたはnullのいずれかのパラメータを持つ関数をたくさん持っています。私たちは私の機能を簡素化した場合、私はこのように代を持っている:issetを簡略化することは可能でしょうか?

funtion ($param) { 
    if ($param) { 
    //true 
    } else { 
    //false 
    } 
} 

をしかし、私はfunction(null);を呼び出すときに、それは明らかに条件の他の部分に入ります。だから私は、迷惑なの一種であるすべての同様のif条件、のために

funtion ($param) { 
    if (isset($param)) { 
     if ($param) { 
     //true 
     } else { 
     //false 
     } 
    } 
} 

を行う必要があります。

だから私の質問はこれです:

が速く、および/または追加機能なしでこのタイプのパラメータと状態のこのタイプを行う可能性はありますか?それはnullである場合、これはそれを無視する

function check($param) 
{ 
    if ($param === true) { 
     // It's true. :) 
    } else if ($param === false) { 
     // It's false.. :o 
    } 
} 

+1

'$ param'が定義されていない場合、' if(boolify($ param)) 'は" undefined "エラーをスローする必要があります。それとも、それが空でないことを見たいだけですか? –

+0

だから3つの可能性がありますか?null、true、false –

+0

@TheOneandOnlyChemistryBlob私は完全に(今編集されている)全部の質問をスクールしています。この状態ではboolifyは正しく機能しません。これはプロジェクトの大きなバグを引き起こした正確な間違いです。 –

答えて

3

は、厳密な型の比較(===)を使用し、truefalseに検証します。

+0

これは私が必要とする正確なコードです! if($ param === false) 'なしでまったく同じ出力を達成する別の方法がありますか?同じ入力を持つすべての条件に対して入力するのに少し長めです。 –

+0

いいえ、実際はありません。どのようにこの行が長すぎることができますか? –

+1

'$ param'を' $ p'に変更することができます。 Btw、それがあなたの問題を解決するならば、解答として解答をマークしてください。 –

1

もっとも便利な機能ですが、下のコードを読んでください。

以下の機能は、あなたのジレンマを解決します。 $paramがtrueまたはfalseの場合、return$paramのブール型バージョンを戻します($ paramがスティングまたは整数などの場合に便利です)。

他の場合は、NULL値として定義されている関数によって何も返されません。型明快テキストと

例:

<?php 
     //Enter your code here, enjoy! 
$test[] = NULL; 
$test[] = true; 
$test[] = false; 
$test[] = "string"; 
$test[] = 45; 

    function tester($param) { 
     if(!is_null($param)){ 
      return (boolean)$param?"true":"false"; 
     } 
     return "null"; 
    } 

foreach($test as $row){ 
    print $row . " :: ". tester($row)."\n"; 

} 

Exampled出力:

::ヌル
1 ::真
::偽
文字列::

45 :: 真真

retu (偽

1(真)
0:

ソリューション:

function ($param) { 
     if(!is_null($param)){ 
      return (boolean)$param; 
     } 
     // not required but useful to keep for code clarity. 
     //return null; 
    } 

可能な結果、これは容易にスリム化バージョンを用いて達成することができるテキスト表現ではなく、実際の型をrnを)
null

関連する問題