【奇奇怪怪】PHP中数组及数组函数的一些小技巧

1.PHP中array_search()只会返回第一个匹配的值的key,要想返回所有匹配值的key请使用array_keys(),举个栗子:

<?php
//php中array_search只会返回第一个匹配的值的key,要想返回所有匹配值的key请使用array_keys
//栗子🌰
$array=array('one'=>'kiwi','two'=>'qingwei','three'=>'tech','four'=>'qingwei','five'=>'love');
var_dump(array_search('qingwei',$array));//string(3) "two"
var_dump(array_keys($array,'qingwei'));//array(2) { [0]=> string(3) "two" [1]=> string(4) "four" }

2.PHP中,在判断一个数组的键是否存在时,不应使用isset(),而应该使用array_key_exists(),举个栗子:

<?php
//php中,在判断一个数组的键是否存在时,不应使用isset(),而应该使用array_key_exists
$array=array('isnull'=>null);
var_dump(isset($array['isnull']));//bool(false)
var_dump(array_key_exists('isnull',$array));//bool(true)

3.PHP中,in_array()函数是一种弱类型比较,若需要强类型比较,请指定第三个参数为ture,这样还可以大大提高程序的性能,举个栗子:

<?php
//php中,in_array()函数是一种弱类型比较,若需要强类型比较,请指定第三个参数为ture,这样还可以大大提高程序的性能
$str='qingwei.tech';
$array=[0,1,2,3,4,5];
var_dump(in_array($str,$array));//bool(true)
var_dump(in_array($str,$array,true));//bool(false)

4.PHP中,建立key为数字字符串的数组,举个栗子:

<?php
//php建立key为数字字符串的数组
$array=new StdClass();
$key=11;
$array->$key='hehe';
var_dump(['11'=>'haha']);// array(1) { [11]=> string(4) "haha" }
var_dump($array);//object(stdClass)#1 (1) { ["11"]=> string(4) "hehe" }

*关于StdClass请参考这里

5.PHP中,函数的返回值为数组的时候,赋值不会重置数组内部指针,举个栗子:

<?php
//php中,函数的返回值为数组的时候,赋值不会重置数组内部指针
function back()
{
    $array=[1,2,3,4];
    foreach ($array as $key){}
    return $array;
}
$arr=back();
var_dump(current($arr));//bool(false)

6.PHP中,赋值引发的死循环,往往是因为数组内部的指针被重置了,举个栗子:

<?php
//php中,赋值引发的死循环,往往是因为数组内部的指针被重置了
$array=array('hello','qingwei.tech');
while($word=each($array))
{
    var_dump($word['value']);
    $x=$array;//关键在这里
}

7.PHP中,array_diff()和array_unipue()函数都是比较数组元素的string值,'(string)[]'->'Array',因此用于多维数组是没有意义的,举个栗子:

<?php
//php中,array_diff()和array_unipue()函数都是比较数组怨毒的string值,'(string)[]'->'Array',因此用于多维数组是没有意义的
error_reporting(E_ALL);
$array=[[1],[2]];
var_dump(array_unique($array));
var_dump(array_diff($array));

PS:如果你觉得本站内容对你有帮助,不如把本站收藏到你的收藏夹,以便下次查看~也欢迎在下方分享点赞以及发言讨论~

版权声明:
作者:Kiwi
链接:https://www.qingwei.tech/programe-develops/587.html
来源:清渭技术小站
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码