函式對0的判斷12
345$cast_id
= 0;
var_dump(
strlen
(
$cast_id
));
//1
var_dump(
empty
(
$cast_id
));
// true
var_dump(isset(
$cast_id
));
//true
var_dump(
is_null
(
$cast_id
));
//false
對空的判斷12
345$cast_id
=
""
;
var_dump(
strlen
(
$cast_id
));
//0
var_dump(
empty
(
$cast_id
));
// true
var_dump(isset(
$cast_id
));
//true
var_dump(
is_null
(
$cast_id
));
//false
今天遇到這樣乙個問題是這樣的: php 語句裡,我想判斷乙個值大於等於0. 我是使用 ($value !=null && $value >=0
), 返回的結果為空,這點真的好奇怪。
實驗總結:
php 語句如下:12
345$index
=0;
echo
"a: "
.
$index
.
"
";
//0
echo
"b: "
.(
$index
!=null &&
$index
>=0).
"
";
//
echo
"c: "
.(isset(
$index
) &&
$index
>=0).
"
";
//1
echo
"d: "
.(0 !=null).
"
";
//
結果:
a: 0要判斷乙個數值[該陣列可能為空等]大於等於0, 可用另外乙個方法:b:c: 1
d:
is_numeric($index) === true
12
3456
789$index
=
array_search
(
$url
,
$contentotherstr
, true);
//值大於等於0, 即存在
if
(
is_numeric
(
$index
) === true)
else
這個很奇怪,終於解決了。mark 一下。
總結:php的語句稍有些怪異,從其它程式語言轉來的同學們一定多加小心謹慎,注意慣性思維及語法差異點啊,避免陷入坑中。
其它資料:
原因是在php中變數是以c語言的結構體來儲存的,空字串和null,false都是以值為0儲存的,其中這個結構體有個zend_uchar type;這樣的成員變數,他是用來儲存變數的型別的,而空字串的型別是string,null的型別是null,false是boolean。
這一點可以用echo gettype('');
和echo gettype(null);
來列印看看!而===運算子是不單比較值,還有比較型別的,所以第三個為false!
另外再說下,php中
= 乙個等號是賦值
== 兩個等號是判斷相等且只比較值,不比較型別
=== 三個等號是判斷值和型別都相等
!= 不等於符號,只比較值,不管型別
!== 不全等符號,比較值和型別
所以 空字串(''),false, null 和 0是值相等而型別不一樣!
注意:null是一種特殊的型別.
兩種情況下為null
1. $var = null;
2. $var;
3.""、0、"0"、null、false、array()、var $var; 以及沒有任何屬性的物件都將被認為是空的,如果 var 為空,則返回 true。
php中區分0和空12
3456
78910
1112
1314
1516
1718
1920
2122
2324
2526
2728
2930
31function
test()
else
// 2、方法二
if
(
$a
!== null)
else
// 3、方法三
if
(
strlen
(
$a
) > 0)
else
// 以上三種方法都只能把其中乙個和另外兩個區分出來,如果需要3個單獨區分,需要結合使用
}
PHP 通過各種函式判斷0和空
cast id 0 var dump strlen cast id 1 var dump empty cast id true var dump isset cast id true var dump is null cast id false cast id var dump strlen cas...
php判斷空值 PHP空值檢測函式與方法彙總
幾乎任何入口的http請求我們都會去檢測它攜帶的引數,類似 isset empty 的函式一定不少見。以下的測試結果基於 php7.16 是否定義判斷 isset 可以使用 isset 函式判斷乙個變數是否定義,陣列內某個元素是否被初始化,它的效率比 array key exists 高4倍左右 a...
PHP 型別判斷和NULL,空值檢查
php是一種寬鬆型別的程式語言,在函式中對傳入的引數值的 型別 以及 值是否為空或者null 進行檢查是不可缺少的步驟。從php5開始,php允許對函式的引數進行型別約束,即可以約束引數的型別為物件,介面,陣列 php 5.1開始 或者callable php5.4起 但是不可以約束引數型別為標量型...