2017-06-06 76 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

相关问题