2017-06-06 40 views
0

我使用下面的代碼來搜索多維數組內的一個元素。當找到匹配它會返回index.But當沒有找到匹配時返回一個空的值。不是0或1.但是如果我打印出類型,它說boolean.What那麼布爾表示它是否意味着它返回空。它是否意味着它將等於空字符串?爲什麼它返回空值,但布爾類型時,找不到匹配

$arr =Array 
(
    0 => Array 
     (
      'uid' => '100', 
      'name' => 'Sandra Shush' 
     ), 

    1 => Array 
     (
      'uid' => '5465', 
      'name' => 'Stefanie Mcmohn'  
     ), 

    2 => Array 
     (
      'uid' => '40489', 
      'name' => 'Michael' 
     ) 
); 

$match = array_search('546',array_column($arr, 'uid')); 

echo gettype($match); 
+0

」如果在陣列中找到它,返回針的鍵,否則返回FALSE。「所以它返回時是布爾值FALSE –

+0

你偶然發現'FALSE'是如何顯示的。「FALSE」不等於「0」,雖然通常可視化。你可以用隱式的方式將它轉換成事物。將「FALSE」轉換爲字符串確實可以提供空字符串。但這並不意味着搜索函數返回一個空字符串。它返回'FALSE'。 – arkascha

+0

它只是說當它的'FALSE',它表示沒有找到,你使用'gettype(FALSE)',因此布爾值回顯 – Ghost

回答

1

array_search()返回FALSE當它無法在乾草堆中找到針。

比較使用==完成。這意味着,如果需要,值會被轉換爲相同的類型。但轉換後它們的值必須相同。它不匹配子字符串。

echo(FALSE);不打印任何東西。確實,FALSE的類型爲boolean。並FALSE==與空字符串(''),零(0),包含數字零的字符串('0'and other empty values。 「

2

http://php.net/manual/en/function.array-search.php

這個函數可以返回布爾值FALSE,但也可能返回的值爲FALSE的非布爾值。有關更多信息,請閱讀布爾部分。使用===運算符來測試此函數的返回值。

當轉換爲布爾值,下面的值被認爲是FALSE:

the boolean FALSE itself 
the integer 0 (zero) 
the float 0.0 (zero) 
the empty string, and the string "0" 
an array with zero elements 
the special type NULL (including unset variables) 
SimpleXML objects created from empty tags 

所有其它值都被認爲是TRUE(包括任何資源和NAN)。

2

array_search()函數返回如果在數組中找到針的鍵,否則返回FALSE。因此,當您在返回值上使用gettype()時,它將返回類型FALSE,即BOOLEAN用於不成功的搜索,否則INT指數值。

2

你的代碼工作,當array_search沒有找到時,然後返回false,如果gettype($ match);然後顯示布爾,如果找到則在這種情況下返回integer

這是代碼返回

<?php 
$arr =Array 
(
    0 => Array 
     (
      'uid' => '100', 
      'name' => 'Sandra Shush' 
     ), 

    1 => Array 
     (
      'uid' => '5465', 
      'name' => 'Stefanie Mcmohn'  
     ), 

    2 => Array 
     (
      'uid' => '40489', 
      'name' => 'Michael' 
     ) 
); 

$match = array_search('5465',array_column($arr, 'uid')); 

echo gettype($match); 

和輸出返回指數等是:integer

這是正常的例子

<?php 
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 

$key = array_search('green', $array); // $key = 2; 
$key = array_search('red', $array); // $key = 1; 
?> 

獲取更多信息

http://php.net/manual/ro/function.array-search.php

相關問題