首页 开发编程 正文

php怎么显示数组 PHP多维数组根据值搜索对应的键

$array){foreach($arrayas$key=>$val){if($val['uid']===$id){return$key;因为第一层结构没有手动指定索引值,使用PHP内置的函数操作起来,使用array_search执行返回键。只需改用array_keys函数即可:$keys=array_keys(array_co...

php怎么显示数组,PHP多维数组根据值搜索对应的键?

引言

我们讲解了很多种PHP数组操作的引用场景。今天我们接着分享这方面的知识,说一说对于多维数组,如何根据值搜索,并返回数组的索引值。

学习时间

最开始我们习惯于跟随本能写代码,下意识地开始用 for 循环,对数组进行遍历,然后挨个比对,如果值相等,就返回索引值,如果没有匹配上,就是不存在。

假如原始数组是如下图一样的关联数组。

程序逻辑很简单,我们使用代码实现一下:

function searchForId($id, $array) { foreach ($array as $key => $val) { if ($val['uid'] === $id) { return $key; } } return null; }

这个函数接收一个值,与数组,如果匹配上就将数组的索引返回,如果不存在则返回 null。因为第一层结构没有手动指定索引值,所以默认是从0开始的数字索引。

使用起来是这样的:

$id = searchForId('100', $userdb);

执行结束后,输出应该为0。

当然了,上面写的函数具有通用性,对于特殊的案例,我们应该随机应变。对于上述 $userdb 关联数组的结构,显然,使用PHP内置的函数操作起来,更为直观和快捷。

我们只需要先把 uid 列的元素全部取出,因为上层结构是默认数字索引,所以此处不用手动指定索引值;然后,在提取的数组中搜索值,使用 array_search 执行返回键。

总结为代码,就一行:

$key = array_search('100', array_column($userdb, 'uid'));

执行结果跟上面的 searchForId 函数一致。

深入讨论

上面的函数和第二个解决方法会有问题,就是仅仅返回了第一个匹配的键。像下面这样写,肯定问题不大:

$key = array_search(40489, array_column($userdb, 'uid'));

但是如果在数组中有重复的值,而 uid 列也不唯一,要把所有的匹配结果都返回,该怎么做呢?不会又要修改 searchForId 函数,重新倒腾?

其实大可不必,PHP提供了这样的功能,只需改用 array_keys 函数即可:

$keys = array_keys(array_column($userdb, 'uid'), 40489);

你肯定经常使用 array_keys 函数用于返回整个数组的键,但是它的第二个参数,恰恰是在指定时,拥有可搜索的功能。这确实有些冷门。

再进一步。

上面返回的是数组对应的键,那如果想要键和值一并关联返回,一行代码能搞定吗?可以的,修改一下就行了,使用 array_combine 函数将键和值组装起来返回:

$keys = array_keys(array_combine(array_keys($userdb), array_column($userdb, 'uid')),40489);

写在最后

本文通过特定的数组搜索需求,延伸到手动造轮子,把特殊的特性推向一般,并使用PHP内置的数组处理函数,进行功能裁切,简洁而高效。善用数组函数是硬功夫。

Happy coding :_)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

怎么把php从数据库中获得的值显示到前台表单中?

首先你将内容赋值给数组,然后需要对数组进行转义,避免内容中某些特殊字符影响到html

假设$Array这个是已经转义后的数组,即

<inputtype="text"value="<?phpecho$Array[内容字段]?>"/>

php如何定义随机数的数组?

因为语言不同,代码就不贴了,思路如下: 定义数组,因为10个是确定的,所以用第一个for循环循环十次,每次都random出数字赋值给数组,之后冒泡排序,因为冒泡法的循环次数不定,用while内嵌for循环:

while(flag){ flag=false; for(i=0;i<10;i++) {if(a[i]>a[i+1]){a[i]=a[i]+a[i+1];a[i+1]=a[i]-a[i+1];a[i]=a[i]-a[i+1];flag=true;}} } 意思就是每次都用冒泡法给a0~a9两两排序,如果确实有不符合要求的就变动位置,如果都没有那么flag保持初值false则推出while循环

thinkphp返回数组空怎么判断?

PHP判断数组为空首选方法:count($arr),size($arr);

$arr= array("");

echo count($arr);

echo size($arr);

//输出1

$arr= array();

echo count($arr);

echo size($arr);

//输出0

PHP判断数组为空方法2:empty($arr);

$arr= array("");

$result = empty($arr);

//$result = false

$arr = array();

$result = empty($arr);

//$result = true

php混合数组解释?

您好,混合数组一般是由关联数组跟索引数组组成的数组!如:array("张三","age"=>25," address"=>"北京"),类似这种的就可以称为混合数组!

本文转载自互联网,如有侵权,联系删除