PHP Conference Japan 2024

variant_xor

(PHP 5, PHP 7, PHP 8)

variant_xor對兩個 variant 執行邏輯互斥運算

說明

variant_xor(mixed $left, mixed $right): variant

執行邏輯互斥 (XOR) 運算。

參數

left

左運算元。

right

右運算元。

注意:

與所有 variant 算術函式一樣,此函式的參數可以是 PHP 原生類型(整數、字串、浮點數、布林值或 null),或是 COM、VARIANT 或 DOTNET 類別的實例。PHP 原生類型將使用與 variant 類別建構函式中相同的規則轉換為 variant。COM 和 DOTNET 物件將使用其預設屬性的值作為 variant 值。

異質變數 (variant) 的算術函式是 COM 資料庫中同名函式的包裝函式;如需這些函式的詳細資訊,請參閱 MSDN 資料庫。PHP 函式的名稱略有不同;例如,PHP 中的 variant_add() 對應於 MSDN 文件中的 VarAdd()

回傳值

異質變數 XOR 規則
left right 則結果為
truetruefalse
truefalsetrue
falsetruetrue
falsefalsefalse
nullnullnull

錯誤/例外

失敗時拋出 com_exception

參見

新增註解

使用者貢獻的註解 3 個註解

tinelbarb at yahoo dot com
14 年前
我一直在大量使用 VARIANT_XOR 函式(所有 VARIANT 函式都很棒),但我面臨的問題是,某些客製化編譯的 PHP,尤其是 LAMP 套件,並未包含 VARIANT 函式,因此腳本會停止執行。
我必須為那些沒有實作 VARIANT_XOR 的人找到替代方案。
如果有人能改進我的「A_XOR_B」函式,將名稱改為「VARIANT_XOR」,並且在 PHP 編譯中已存在原始 VARIANT_XOR 函式時執行它(已最佳化),否則執行自訂 XOR 程式碼,我會非常感激。

<?php
function a_xor_b($a=0, $b=0) {
return ( (
$a!=$b) && ($a||$b) ) ? TRUE : FALSE ;
}
?>

如果使用此函式,請確保您對參數使用相同的類型 ;-)

以下是使用它的範例程式碼

<?php
if ( a_xor_b(strlen($column1)>0,strlen($column2)>0) ) {
$add_and='';
}
if ( !
a_xor_b(strlen($column1)>0,strlen($column2)>0 ) && strlen($column1)>0 ) {
$add_and=' and ';
}
$some_sql_filter=$query_str.' having '.$column1.$add_and.$column2;
?>

VARIANT_XOR 的用法相同。

@PHP 團隊:VARIANT 集合真是太棒了 :-)
tinelbarb at yahoo dot com
14 年前
我一直在大量使用 VARIANT_XOR 函式(所有 VARIANT 函式都很棒),但我面臨的問題是,某些客製化編譯的 PHP,尤其是 LAMP 套件,並未包含 VARIANT 函式,因此腳本會停止執行。
我必須為那些沒有實作 VARIANT_XOR 的人找到替代方案。
如果有人能改進我的「A_XOR_B」函式,將名稱改為「VARIANT_XOR」,並且在 PHP 編譯中已存在原始 VARIANT_XOR 函式時執行它(已最佳化),否則執行自訂 XOR 程式碼,我會非常感激。

<?php
function a_xor_b($a=0, $b=0) {
return ( (
$a!=$b) && ($a||$b) ) ? TRUE : FALSE ;
}
?>

如果使用此函式,請確保您對參數使用相同的類型 ;-)

以下是使用它的範例程式碼

<?php
if ( a_xor_b(strlen($column1)>0,strlen($column2)>0) ) {
$add_and='';
}
if ( !
a_xor_b(strlen($column1)>0,strlen($column2)>0 ) && strlen($column1)>0 ) {
$add_and=' and ';
}
$some_sql_filter=$query_str.' having '.$column1.$add_and.$column2;
?>

VARIANT_XOR 的用法相同。

@PHP 團隊:VARIANT 集合真是太棒了 :-)
tinelbarb at yahoo dot com dot RE-MO-VE dot ME
14 年前
我一直在大量使用 VARIANT_XOR 函式(所有 VARIANT 函式都很棒),但我面臨的問題是,某些客製化編譯的 PHP,尤其是 LAMP 套件,並未包含 VARIANT 函式,因此腳本會停止執行。
我必須為那些沒有實作 VARIANT_XOR 的人找到替代方案。
如果有人能改進我的「A_XOR_B」函式,將名稱改為「VARIANT_XOR」,並且在 PHP 編譯中已存在原始 VARIANT_XOR 函式時執行它(已最佳化),否則執行自訂 XOR 程式碼,我會非常感激。

<?php
function a_xor_b($a=0, $b=0) {
return ( (
$a!=$b) && ($a||$b) ) ? TRUE : FALSE ;
}
?>

如果使用此函式,請確保您對參數使用相同的類型 ;-)

以下是使用它的範例程式碼

<?php
if ( a_xor_b(strlen($column1)>0,strlen($column2)>0) ) {
$add_and='';
}
if ( !
a_xor_b(strlen($column1)>0,strlen($column2)>0 ) && strlen($column1)>0 ) {
$add_and=' and ';
}
$some_sql_filter=$query_str.' having '.$column1.$add_and.$column2;
?>

VARIANT_XOR 的用法相同。

@PHP 團隊:VARIANT 集合真是太棒了 :-)
To Top