> 백엔드 개발 > PHP 튜토리얼 > array_search()函数,第3个参数,有什么作用?

array_search()函数,第3个参数,有什么作用?

WBOY
풀어 주다: 2016-06-23 14:23:29
원래의
1040명이 탐색했습니다.

http://docs.php.net/manual/zh/function.array-search.php

mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )
로그인 후 복사


strict
如果可选的第三个参数 strict 为 TRUE,则 array_search() 将在 haystack 中检查完全相同的元素。 这意味着同样检查 haystack 里 needle 的 类型,并且对象需是同一个实例。


问题:
这个函数,第3个参数:$strict = false,有什么作用?
给个实例。


回复讨论(解决方案)

如手册中所说一样,当第三个参数为true的时候,则要检查值的类型

如手册中所说一样,当第三个参数为true的时候,则要检查值的类型

给个实例!

<?     $x=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"q2","4"=>"Q2","5"=>"q2");     $y=array_search("q2",$x);     echo $y;     echo "\r\n";          $xx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"q2","4"=>"Q2","5"=>"q2");     $yy=array_search("q2",$xx,$strict =false);     echo $yy;     echo "\r\n";          $xxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"q2","4"=>"Q2","5"=>"q2");     $yyy=array_search("q2",$xxx,$strict =true);     echo $yyy;     echo "\r\n";?>
로그인 후 복사



上面的代码加了参数:,$strict =true或,$strict =false
没什么区别?

<?php$x=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"2","4"=>"Q2","5"=>"q2");$y=array_search("2",$x);echo $y;echo "<hr>";$xx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yy=array_search("2",$xx,$strict =false);echo $yy;echo "<hr>";$xxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yyy=array_search("2",$xxx,$strict =true);echo $yyy;echo "<hr>";$xxxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yyyy=array_search(2,$xxx,$strict =true);echo $yyyy;echo "<hr>";
로그인 후 복사
로그인 후 복사


我把q2换成2.。然后分别用false 和 true来输出。。第三个是不输出的。。为true时是类型和值都得一样。但第三个是检查“2”。。而数组中的是2,。类型不同所以没输出,打印的话就为false。。为false时忽略类型,所以二个有输出

$ar = array(1, 2, 3);var_dump(array_search('2', $ar, true)); //bool(false)var_dump(array_search(2, $ar)); //int(1)
로그인 후 복사
로그인 후 복사
로그인 후 복사

$a = array("a"=>"5","b"=>5);
echo array_search(5,$a);不用判断值的类型 所以字符串"5" 匹配成功
echo '
';
echo array_search(5,$a,true);需要判断值的类型 所以字符串"5" 匹配不成功 数字5匹配成功


<?php$x=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>"2","4"=>"Q2","5"=>"q2");$y=array_search("2",$x);echo $y;echo "<hr>";$xx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yy=array_search("2",$xx,$strict =false);echo $yy;echo "<hr>";$xxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yyy=array_search("2",$xxx,$strict =true);echo $yyy;echo "<hr>";$xxxx=array("0"=>"Q1","1"=>"Q2","2"=>"Q3","3"=>2,"4"=>"Q2","5"=>"q2");$yyyy=array_search(2,$xxx,$strict =true);echo $yyyy;echo "<hr>";
로그인 후 복사
로그인 후 복사


我把q2换成2.。然后分别用false 和 true来输出。。第三个是不输出的。。为true时是类型和值都得一样。但第三个是检查“2”。。而数组中的是2,。类型不同所以没输出,打印的话就为false。。为false时忽略类型,所以二个有输出


正常!

$ar = array(1, 2, 3);var_dump(array_search('2', $ar, true)); //bool(false)var_dump(array_search(2, $ar)); //int(1)
로그인 후 복사
로그인 후 복사
로그인 후 복사


in_array()函数,第3个参数,也是这样作用?

手册中有:如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。
为什么都不看呢?神仙?


$ar = array(1, 2, 3);var_dump(array_search('2', $ar, true)); //bool(false)var_dump(array_search(2, $ar)); //int(1)
로그인 후 복사
로그인 후 복사
로그인 후 복사


in_array()函数,第3个参数,也是这样作用?

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿