【发布时间】:2014-10-23 07:38:16
【问题描述】:
我有这个数组是从 web 服务的 xml 转换而来的。我在这个数组中有 500 个项目。 我想搜索任何值并返回所有找到的具有键关联的数组项(类似于数据库选择查询)。所以如果我搜索 'dummy' 那么它应该返回这个数组的第一项。
大批 ( [12.12.2014] => 数组 ( [7] => 数组 ( [id] => 1672 [日期] => 12.12.2014 [描述] => 拉米虚拟数据 [房间] => 豪华 [类型] => 花园 [从] => 17:00 [到] => 17:45 [资产] => 数组 ( [资产] => 数组 ( [0] => 数组 ( [数字] => 5275 [详细] => 初级 ) [1] => 数组 ( [数字] => 19 [详细] => 二级 ) ) ) [参考] => 数组 ( [参考] => 数组 ( [人号] => 479470 [类型] => 工人 [名称] => 大卫 [部门] => 销售 [cv] => 数组 ( [pdetails] => 稍后关注 ) [个人资料] => 真 ) ) ) ) [13.12.2014] => 数组 ( [17] => 数组 ( [id] => 1672 [日期] => 13.12.2014 [描述] => 棕狐跳跃 [房间] => 星星 [类型] => 城市 [从] => 17:00 [到] => 17:45 [资产] => 数组 ( [资产] => 数组 ( [数字] => 5275 [详细] => 素数二 ) ) [参考] => 数组 ( [参考] => 数组 ( [人号] => 479470 [类型] => 经理 [名称] => 阿尔伯特 [部门] => 采购 [cv] => 数组 ( [pdetails] => 稍后关注 ) [个人资料] => 真 ) ) ) ) )我尝试stripos 在数组值和基于in_array 的函数中搜索字符串,但结果不正确或键关联未维护。
我无法找到维护 key->value 的方法。
函数搜索($array, $key, $value) { $结果 = 数组(); if (is_array($array)) { if (isset($array[$key]) && $array[$key] == $value) $结果[] = $数组; foreach ($array 作为 $subarray) $results = array_merge($results, search($subarray, $key, $value)); } 返回$结果; }这可能是您见过的最糟糕的功能,但它可以完成工作。如果有人可以使其递归(数组可能更深)。
函数 search_in_multi_array($srchvalue, $array) { $foundkey = ''; if (is_array($array) && count($array) > 0) { foreach($array as $pkey => $pvalue) { foreach($pvalue as $ckey => $cvalue) { if (is_array($cvalue) && count($cvalue) > 0) { if(in_array($srchvalue,$cvalue)) { $foundkey[$pkey][$ckey] = $cvalue; } foreach($cvalue 作为 $dkey => $dvalue) { if(!is_array($dvalue)) { $pos = stripos($dvalue, $srchvalue); 如果 ($pos !== 假) { $foundkey[$pkey][$ckey] = $cvalue; } } } } } } } 返回$foundkey; }函数调用 - $needle = '狐狸'; search_in_multi_array($needle, $my_array); 这是输出
大批 ( [13.12.2014] => 数组 ( [17] => 数组 ( [id] => 1672 [日期] => 13.12.2014 [描述] => 棕狐跳跃 [房间] => 星星 [Type1] => 城市 [从] => 17:00 [到] => 17:45 [资产] => 数组 ( [资产] => 数组 ( [数字] => 5275 [详细] => 素数二 ) ) [参考] => 数组 ( [参考] => 数组 ( [人号] => 479470 [Type1] => 经理 [名称] => 阿尔伯特 [部门] => 采购 [cv] => 数组 ( [pdetails] => 稍后关注 ) [个人资料] => 1 ) ) ) ) )【问题讨论】:
-
你必须展示你尝试过的东西
-
给定数组的预期输出是什么。举个例子
-
这显然是一个很好的递归例程的例子。 :-) 但是,是的,向你展示你所拥有的和你期望的输出。
标签: php arrays multidimensional-array