2

PHPの数行に疑問があります。

次のコードがあります。

// returns TRUE if a day is festive, FALSE otherwise
$festive = isFestive();
// 
$workingDay = $d>0 && !$festive;

$workingDay = $d>0 && !$festiveと同じですか$workingDay = $d>0 && $festive==FALSE;

どんな助けでも大歓迎です。

4

3 に答える 3

2

はい、そうです。代わりにそうする場合は異なります。$festive === FALSEその場合、「偽」である の値は$festive真を返さないためです。正確には FALSE ではないからです。

于 2012-11-07T12:02:28.067 に答える
1

データ型と、PHP が非ブール型のさまざまな値を「false」として扱う方法がすべてです。これを説明するために、次のスニペットを確認してください。

<?php
$test = false;
$test2 = null;
$test3 = 0;
$test4 = '';
$test5 = array();

var_dump($test == false);
var_dump($test2 == false);
var_dump($test3 == false);
var_dump($test4 == false);
var_dump($test5 == false);

var_dump($test === false);
var_dump($test2 === false);
var_dump($test3 === false);
var_dump($test4 === false);
var_dump($test5 === false);

結果の出力(フォーマット済み):

bool(true)
bool(true)
bool(true)
bool(true)
bool(true)

bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
于 2012-11-07T12:09:03.693 に答える
1

任意if()の式は、 または のいずれかに評価されfalseますtrue。式が明示的にブール値でない場合は、ブール値に変換されてから評価されます。PHP が特定の型を boolean に変換する方法を次に示します。一般に、値 (数値、非ブール値) がゼロ以外の場合、それは と見なされTRUEます。PHP が式を評価する方法の詳細については、このドキュメントを参照してください。

したがって、あなたの場合、実際の値に$d>0応じてブール値に評価されますが、 forは最初にブール値に変換されてから否定されます ( 、つまり、数値の値である場合は、 (非ゼロ) に変換されてから否定されるため、式は に評価されます。$d!$festive$festive!$festive2TRUE!$festiveFALSE

追加の注意: 論理条件がAND( &&) であるため、ブール代数が常に$d>0であるため、 が に評価される場合は評価されfalseません。!$festivefalse && <anything> false

于 2012-11-07T12:09:27.547 に答える