4

このコードに出くわしました:

<?php
require_once 'HTTP/Session/Container/DB.php';

$s = new HTTP_Session_Container_DB('mysql://user:password@localhost/db'); 

ini_get('session.auto_start') or session_start();  //HERE. ?? 

?>

この種のエクスプレスはPHPで何を意味しますか? [a または b] ?

ini_get('session.auto_start') or session_start();

ありがとう。

4

5 に答える 5

3

キーワードorは「論理和」演算子で、次と同等||です。

if ($x < 0 or $y < 0) // the same as:
if ($x < 0 || $y < 0) 

のプロパティはor、最初のオペランドが true を返す場合、2 番目のオペランドが評価されないことです。

  if (!isset($var) || $var === null)
#                     ^^^^^^^^^^^^^
#                     This code is never run if !isset($var) returns false.

これは、「何かを行うか、エラーを処理する」コードを書くために (誤) 使用される可能性があります。

  do_something() or handle_error()
# ^^^^^^^^^^^^^^
# If do_something() returns true, there is no error to handle, 
# and handle_error() is never executed.

明示的に使用すると、より明確に記述できますif

if (!do_something())
    handle_error();
于 2012-06-29T13:01:17.273 に答える
2

その表現は、のor働き方にかかっています。通常、2 つのブール値のいずれかが true かどうかを確認するために使用されます。

$foo = true or false // true
$foo = false or false // false

クールなことは、左の部分orが true の場合、後者の部分をチェックする必要がないため、決してチェックしないことです。つまり、 の両側に式を入れることができますor。左側の部分が負の値 ( に解決される値false) になる場合、右側の部分が実行されます。左側の部分が正の値 (true に解決される値) になる場合、右側の部分は実行されません。

要約すると、これは次のとおりです。

ini_get('session.auto_start') or session_start();

これと同じです:

if(!ini_get('session.auto_start')) session_start();

ini_get('session.auto_start')結果はまたは0になり、それぞれおよび1に評価されます。falsetrue

于 2012-06-29T13:01:20.690 に答える
2

aPHP が に変換できる値に解決される場合はtrueb実行されません。

のショートカットとして使用できます。if( !a ) b

于 2012-06-29T12:58:34.530 に答える
1

機能 A を実行し、失敗した場合は機能 B を実行

通常、これは mysql_query("jibberish") または die('mysql couldt run query'); で確認できます。

于 2012-06-29T12:58:05.580 に答える
1

あなたの場合、session.auto_start が true に設定されている場合は、何もしません。それ以外の場合は、セッションを開始します。

a OR b は、a が true かどうかをチェックし、そうでない場合は b を実行します。

基本的に、これは、デフォルトで開始されていない場合にのみセッションを開始することを意味します。

于 2012-06-29T12:58:19.757 に答える