首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在多维数组中按全键搜索值,并得到匹配数据php的键值?

在多维数组中按全键搜索值,并得到匹配数据的键值,可以使用递归算法来实现。以下是一个示例的PHP代码:

代码语言:txt
复制
function searchValueInArray($array, $value) {
    foreach ($array as $key => $val) {
        if ($val === $value) {
            return $key;
        }
        if (is_array($val)) {
            $result = searchValueInArray($val, $value);
            if ($result !== false) {
                return $key . '.' . $result;
            }
        }
    }
    return false;
}

// 示例多维数组
$array = array(
    'key1' => 'value1',
    'key2' => array(
        'subkey1' => 'subvalue1',
        'subkey2' => 'subvalue2',
        'subkey3' => array(
            'subsubkey1' => 'subsubvalue1',
            'subsubkey2' => 'subsubvalue2'
        )
    ),
    'key3' => 'value3'
);

// 搜索值为'subsubvalue2'的键值
$result = searchValueInArray($array, 'subsubvalue2');
echo $result;

输出结果为:key2.subkey3.subsubkey2

上述代码中,searchValueInArray函数接受一个多维数组和要搜索的值作为参数。它使用foreach循环遍历数组的每个元素,如果当前元素的值与要搜索的值相等,则返回当前键。如果当前元素是一个数组,则递归调用searchValueInArray函数进行深度搜索。如果找到匹配的值,则返回当前键和递归调用的结果的连接。如果遍历完整个数组后仍未找到匹配的值,则返回false。

这种方法可以在多维数组中进行全键搜索,并返回匹配数据的键值路径。在实际应用中,可以根据返回的键值路径来获取相应的数据或进行其他操作。

腾讯云相关产品和产品介绍链接地址:

请注意,以上仅为示例产品,实际应根据具体需求选择适合的腾讯云产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【黄啊码】php函数大全,新手必备神器

]【返回一维数组】 3.元素个数和唯一性 1.array_unique($arr);//去掉$arr重复,重复保留第一个,【返回数组键值保留】 2.array_count_values...TRUE数据组成新数组键值保留】 2.array_walk($arr,"function"[,"data"]);//把$arr放到 function( & $v,$k,$data)... 单词数量[0指返回次数,默认/1指以数组形式返回单词/2指返回关联数组,k为单词首字母下标,v单词] 4.strcmp($str1,$str2);//ASCII码比较...1. preg_match($pattern,$subject,$arr);//正则$pattern处理$subject ,第一次匹配结果返回到数组【函数返回匹配次数...】 2.preg_match_all($pattern,$subject,$arr)//正则$pattern处理$subject,全部匹配结果返回到数组【函数返回匹配次数

77720

读书笔记《PHP与MySQL程序设计》一

$name="Gavin"; $obj=(object) $name; echo $obj->scalar;//Gavin,任何数据都可转为对象,默认成为对象scalar属性   类型自动转换 $...=相当于JS+= 3.9 字符串插入   双引号(包裹字符串)   转义序列 单引号(与双引号不同,解析时变量和转义序列不会被解释)   大括号(常用于嵌入复杂数据类型,{$arr['name'...$arr';}//搜索关联数组,返回布尔 $key=array_search(1,$arr);if($key){echo "$key : $arr[$key]";}//搜索关联数组,如果找到返回相应...($arr));//数组对换,Array ( [one] => 0 [two] => 1 [three] => 2 ) sort($arr);print_r($arr);//数组排序,破坏键值关联...]);//返回一组随机 shuffle();//随机洗牌数组元素 array_sum();//对数组求和 array_chunk();//划分数组 第6章 面向对象PHP 6.1 OOP好处

2.2K60

PHP 数组

数组就是一组数据集合,把一系列数据组织起来。如果变量是存储单个容器,那么数组就是存储多个容器。数组每个实体包含一个和一个PHP数组概念和python元组和字典类似。...本文包含 数组声明 数组输出 多维数组 遍历数组 字符串和数组转换 统计数组中元素个数 查询数组中指定元素 获取数组中最后一个元素 向数组添加元素 删除数组重复元素 1....查询数组中指定元素:array_search()函数用于在数组搜索给定,找到后返回键值,否则返回false,在php4.2.0之前没找到会返回null。...array_search($str,$array,strick); $str是要搜索,$array是被搜索数组,strick是可选参数,如果strick=true,还可以返回数组类型。...删除数组重复元素:array_unique() array_unique($array); 将作为字符串排序,然后对每个只保留第一个键值,达到删除数组重复元素目的。

6.3K51

PHP 数组函数整理

分类整理 数组内容操作: array_change_key_case: 将数组键名修改为大写或小写 array_column: 提取出数组元素指定 array_filter: 对数组进行过滤...: 对多个数组多维数组进行排序 extract: 将数组内容提取为变量, 为变量名, 为变量值 数组搜索: count: 计算数组长度 sizeof: count 别名 array_key_exists...compact: 将现存变量包含到数组 range: 按照给定范围创建数组 详细说明 array_change_key_case($arr, $case=CASE_LOWER): 将数组键名修改为大写或小写..., 返回是否成功 arr: 要改变数组 case: 模式选择 CASE_UPPER: 大写 CASE_LOWER: 小写 注意: 如果数组多个经过转换, 变成一样, key和kEY, 那么...$arr): 将数组键值反转 若反转后同一个有多个, 使用最后一个 array_key_exists($key, $arr): 指定数组是否存在 array_key_first($arr

2.7K20

3分钟短文 | PHP多维数组搜索,就只能for循环?这样写更高效

引言 我们讲解了很多种PHP数组操作引用场景。今天我们接着分享这方面的知识,说一说对于多维数组,如何根据搜索返回数组索引。 ?...我们只需要先把 uid 列元素全部取出,因为上层结构是默认数字索引,所以此处不用手动指定索引;然后,在提取数组搜索,使用 array_search 执行返回。...array_keys 函数用于返回整个数组,但是它第二个参数,恰恰是在指定时,拥有可搜索功能。...上面返回数组对应,那如果想要关联返回,一行代码能搞定吗?...($userdb, 'uid')),40489); 写在最后 本文通过特定数组搜索需求,延伸到手动造轮子,把特殊特性推向一般,使用PHP内置数组处理函数,进行功能裁切,简洁而高效。

2.4K20

Laravel 集合 Collection

$collection = collect([1, 2, 3, 4]); $collection->count(); // 4 #9.diff方法,将集合与其它集合或纯 PHP 数组进行比较,然后返回原集合存在而给定集合不存在...数组」进行比较,然后返回原集合存在而#给定集合不存在「」所对应键值对。...#如果给定项目中字符串与原集合字符串匹配,给定项目的将会覆盖原集合。..., 3, 4, 5]); $reversed = $collection->reverse(); $reversed->all(); // [5, 4, 3, 2, 1] #54.search方法,搜索给定返回它...#76.whereStrict方法 方法与 where 方法一样;但是会以「严格」比较来匹配所有。 #77.whereIn方法,通过给定键值数组来过滤集合。

5.6K20

打造次世代分析型数据库(四):几十张表关联?小Case!

Shard分布是指表数据某一列或某几列,经过函数计算后选择不同存储节点,其特点是分布键值相同数据必然存储在同一个节点上,所有节点存储数据总和为一份数据;Replication分布是指表在所有存储节点上都存储着一份数据...在CDW PG,不同分布类型表在连接选择时,除了扫描路径、连接类型和连接顺序外,还需要根据分布和连接匹配情况,选择对应数据重分布路径,以保证连接结果正确性。...表Replication分布 当连接两侧,有一侧表是Replication分布时,不管另一侧表分布和连接是否匹配,当前不需要进行数据重分布就可以进行连接操作。...连接条件匹配表Shard分布 当连接两侧表均为Shard分布,并且分布和连接匹配情况下,由于Shard分布可以保证对应列相同数据存储在同一节点上,当前仍然不需要进行数据重分布操作,可直接进行连接...连接条件不匹配表Shard分布 当连接两侧表均为Shard分布,但是分布和连接匹配情况下,需要视情况对其中一侧或两侧表进行数据重分布,将连接键值相同数据重分布到同一节点上,以保证连接结果正确性

62320

PHP常用函数总结

返回由变量名为,变量值为数组,变量也可以为多维数组.会递归处理 76.array_fill(): 用给定填充(生成)数组 $a=array_fill(2,3,”Dog”); print_r(...91.end(): 将数组内部指针指向最后一个元素,返回该元素(如果成功) 92.reset(): 把数组内部指针指向第一个元素,返回这个元素 93.list(): 用数组元素为一组变量赋值...(): 返回数组中所有,组成一个数组 输出: 返回由键值组成数组 103.array_reverse(): 返回一个元素顺序相反数组 元素顺序相反一个数组,键名和键值依然匹配 104.array_count_values...如果要再用 each 遍历数组,必须使用 reset()。 返回: 数组当前指针位置对并向前移动数组指针。键值对被返回为四个单元数组,键名为0,1,key和 value。...pattern: 要搜索模式,可以使字符串或一个字符串数组。 callback: 一个回调函数,在每次需要替换时调用,调用时函数得到参数是从subject 匹配结果。

3.2K21

五大主流数据库模型有哪些_五大主流品牌

2.键值存储 键值存储提供了基于访问方式。 键值对可以被创建或删除,与相关联可以被更新。 键值存储一般不提供事务处理机制。 对不同编程语言而言,键值存储类似于哈希表。...对此,不同编程语言有不同名字(,Java称之为“HashMap”,Perl称之为“hash”,Python称之为“dict”,PHP称之为“associative array”),C++则称之为“...键值存储支持上自有的隐式索引。 键值存储看起来好像不太有用,但却可以在“”上存储大量信息。“”可以是一个XML文档,一个JSON对象,或者其它任何序列化形式。...与关系模型不同是,文档存储模型支持嵌套结构。例如,文档存储模型支持XML和JSON文档,字段”又可以嵌套存储其它文档。文档存储模型也支持数组和列。...这直接体现在Cassandra,它引入“column family”可以被认为是一个“super-column”。 列式存储支持行检索,但这需要从每个列获取匹配,并重新组成行。

1.8K10

CTFshow之web入门---PHP特性上

我们可以参考官方文档 **preg_match()返回 pattern 匹配次数。 它将是0次(不匹配)或1次,因为preg_match()**在第一次匹配后 将会停止搜索。...多行匹配存在php,单行不匹配 ?...; foreach($_GET as $key => $value){ #get是一个预定义数组,此处将get数据按照键值对取出 if($key==='error'){ #key...; } $$key=$$value; #此处将传入传参名()和传参)定义为变量,使传参名(数值等于传参),通俗说,就是咱们人工加入了一个变量,而且给予赋值...}foreach($_POST as $key => $value){ #post同样是一个预定义数组,同样按照键值对取出 if($value==='flag'){ #如果传入为flag

21610

想学习php,不如来这里看看

,apache可以调用php解析器直接解析php代码,html中直接嵌套php代码,当前要是在php文件 基本知识 php变量名区分大小写,函数名和类名不区分大小写,所以干脆变量名和函数名小写..."; 23.数组函数 数组键值操作函数 array_keys();获取数组,参数是数组名 array_vals();获取数组,参数是数组名 array_key_exists...();检查一个是否在数组 in_array();检查一个是否在数组,里面的参数是""和数组名 array_flip();对调,参数是数组名 array_reverse...,返回一个新数组 array_unique();删除数组重复 使用回调函数处理数组函数(过滤) array_filter();数组过滤,筛选出符合条件,参数是数组名和条件...2.自然排序时字符串比较 strnatcmp();自然排序比较字符串数字 strnatcasecmp();自然排序忽略比较字符串数字 字符串分割与拼接(和前面数组部分一样

1.3K30

Go 语言基础入门教程 —— 数据类型篇:字典类型及其基本使用

字典定义 有 PHP 基础同学都应该知道,PHP 数组包含索引数组和关联数组PHP 索引数组即对应 Go 语言数组和切片类型,PHP 关联数组即对应 Go 语言中字典类型(map),所谓字典...,其实就是存储键值对映射关系集合,只不过对于强类型 Go 语言来说,与 PHP 关联数组不同之处在于需要在声明时指定类型,此外 Go 字典是个无序集合,底层不会像 PHP 那样按照元素添加顺序维护元素存储顺序...注:Go 语言中字典和 PHP 关联数组一样,底层都是通过哈希表实现,添加键值对到字典时,实际是将转化为哈希进行存储,在查找时,也是先将转化为哈希去哈希表查询,从而提高性能,但是哈希表存在哈希冲突问题...,即不同可能会计算出同样哈希,这个时候 Go 底层还会判断原始是否相等,如果不相等,也正因如此,我们在声明字典类型时,要求数据类型必须是支持通过 == 或 !...删除为「four」键值对。

1.1K30

【Leetcode之路 | Java & Python】两数之和(暴力枚举&哈希表)

数组&双指针章节 二、两数之和 和hello world 一样经典刷题入门第一题 —— 两数之和 原题如下: 给定一个整 数数组 nums 和一个整数目标值 target,请你在该数组找出 和为目标值...target 那 两个 整数,>返回它们数组下标。...但是,数组同一个元素在答案里不能重复出现。 你可以任意顺序返回答案。...我们把两者结合起来,便是哈希表, 哈希表底层实际上是基于数组来存储,当插入键值对时,并不是直接插入该数组,而是通过对进行Hash运算得到Hash,然后和数组容量取模,得到数组位置后再插入...取值时,先对指定求Hash,再和容量取模得到底层数组对应位置,如果指定键值与存贮匹配,则返回该键值对,如果不匹配,则表示哈希表没有对应键值对。

54410

PHP array_search() 函数

实例 在数组搜索键值 "red",返回它键名: 定义和用法 array_search() 函数在数组搜索某个键值返回对应键名。 详细说明 在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false。...规定需要搜素键值。 array 必需。规定被搜索数组。 strict 可选。如果该参数被设置为 TRUE,则函数在数组搜索数据类型和都一致元素。...技术细节 返回: 如果在数组中找到指定键值,则返回对应键名,否则返回 FALSE。如果在数组中找到键值超过一次,则返回第一次找到键值匹配键名。...自 PHP 4.2.0 起,如果搜索失败,该函数返回 FALSE,而不是 NULL。 更多实例 例子 1 在数组搜索键值 5,返回它键名(注意 ""): <?

57000

PHP实现提取多维数组指定一列方法总结

分享给大家供大家参考,具体如下: PHP多维数组特定列提取,是个很常用功能,正因为如此,PHP在5.5.0版本之后,添加了一个专用函数array_column()。...input array 需要取出数组多维数组(或结果集) * @param $column_key string 需要返回列,它可以是索引数组列索引,或者是关联数组。...也可以是NULL,此时将返回整个数组 * @param $index_key string 作为返回数组索引/列,它可以是该列整数索引,或者字符串键值。...,获取移除作为新数组。...参考资料: php获取二维数组某一列集合 php 快速对二维数组某一列进行组装方法 更多关于PHP相关内容感兴趣读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《php排序算法总结

5.2K41
领券