我会尝试清理一下,但这有效:

$needle = ["chapter one", 'foo', 'bar'];

$array = [

[

"name" => "Intro",

"id" => "123",

"children" => [

"name" => "foo",

"id" => "234",

"children" => [

"name" => "mur",

"id" => "445",

]

]

],[

"name" => "chapter one",

"id" => "9876",

"children" => [

"name" => "foo",

"id" => "712",

"children" => [

"name" => "bar",

"id" => "888",

]

]

]

];

function searchTree($needle, $haystack, $strict=false) {

if(!is_array($haystack)) {

return false;

}

$match = false;

if(array_keys($haystack) !== range(0, count($haystack) - 1) && !empty($needle)) {

if(($strict && $haystack['name'] === $needle[0]) || (!$strict && $haystack['name'] == $needle[0])) {

$match = true;

array_shift($needle);

if (!empty($needle)) {

return searchTree($needle, $haystack['children'], $strict);

}

}

} else {

foreach ($haystack as $key => $value) {

if (is_array($value) && !empty($needle)) {

if (($strict && $value['name'] === $needle[0]) || (!$strict && $value['name'] == $needle[0])) {

$match = true;

array_shift($needle);

if (!empty($needle)) {

return searchTree($needle, $value['children'], $strict);

} else {

$haystack = $haystack[$key];

}

}

}

}

}

return (isset($haystack['id']) && $match) ? $haystack['id'] : false;

}

echo searchTree($needle, $array);

输出:

888

php数组里面写路径,使用路径在PHP数组中进行递归搜索相关推荐

  1. js map 排序_数组方法写给女友的一系列 JS 数组操作(建议收藏 | 内附思维导图)...

    前言 最近和女友,咳咳...(说出来可能会被打s)学习JS数组方法,用几个字形容的话就是听说过,实际使用.遇到的时候就分不清具体方法会得到怎样的结果. 今天我将通过这篇文章好好整理一下关于JS数组的方 ...

  2. 利用js写一个函数,实现翻转任意数组。 写一个函数,实现对数字数组的排序。

    1.写一个函数,实现翻转任意数组 function reverse(arr) {var newArr = [];for (var i = arr.length - 1; i >= 0; i--) ...

  3. 路径问题(如何正确写出文件路径)

    package star.july;import java.io.IOException; import java.io.PrintWriter;import javax.servlet.Servle ...

  4. snmpset对象不可写_写 I/O 路径 (FTT1/RF2) 对比 – Nutanix vs VMware vSAN

    Josh博客原文 在这一部分中,我们将介绍每个产品写操作的I / O路径,这里的写操作是带镜像的(也称为vSAN的FTT1和Nutanix的RF2). 我将发布部署软件定义的存储"In-Ke ...

  5. 简简单单写个二叉树路径和likou112

    上一次写了哥所有路径,这一次就用到它了,让你判断二叉树路径中是否有和等于指定目标的. (22条消息) 左叶子之和.二叉树的所有路径._小肖在路上的博客-CSDN博客 存入list中判断就好了,比较容易 ...

  6. spring Java相对路径/绝对路径总结

    原文出处:http://www.233.com/Java/zhuanye/20101108/13463331-2.html 下面是一些得到classpath和当前类的绝对路径的一些方法.你可能需要使用 ...

  7. Java相对路径/绝对路径总结(转)

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:xyz est.txt 代表了test.txt文件的绝对路径.http://www. ...

  8. logback-spring.xml 文件路径 相对路径_小白学 Python(18):基础文件操作

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  9. 迪杰斯特拉--- 模板(求最短路径/输出路径/所有路径都可以走的做法)

    迪杰斯特拉--- 模板(求最短路径/输出路径/所有路径都可以走的做法) 1.0版 #include <iostream> using namespace std;const int max ...

最新文章

  1. 【STM32】FSMC相关函数和类型
  2. SQL语句之Insert
  3. java 加密服务器_Javascript端加密java服务端解密
  4. oxyen eclipse 启动 报错 se启动提示javaw.exe in your current PATH、No java virtual machine
  5. 可为空的对象必须具有一个值_前端:这里有8个常见的JavaScript经典问题,总有一个你不会的...
  6. 献给那些离婚或准备离婚的人
  7. 对话阿里云总裁张建锋:解密阿里云再生长的动力、合力和张力
  8. 语音识别(1)---语音识别(ASR)评估指标-WER(字错误率)和SER(句错误率)
  9. JAVA ActiveMQ消息发送和接收
  10. 前端基础学习之Html标签
  11. Dynamic web project下SSM整合
  12. 消息队列控制灯代码_基于ARM的智能灯光控制系统经验总结分享
  13. windows中bat批处理的注释语句
  14. shuffleNet实现
  15. android微信支付跳转逻辑,Android对接微信支付
  16. JVM - 垃圾回收(垃圾标记阶段算法,内存泄漏与溢出)(2)
  17. 微信小程序商城源码学习
  18. oa系统 云服务器配置,oa系统云服务器配置
  19. 设计一个一元稀疏多项式简单计算器
  20. 魔方二代 php代码还原

热门文章

  1. 如何优雅的实现一个靠谱的RTSP播放器?
  2. Java中String类中compareTo( )方法
  3. Java service层获取HttpServletRequest工具类的方法
  4. 浅谈String str = ““ 和 new String()的区别
  5. flash动画制作作品_flash施工动画制作应该展现哪些内容
  6. python继承问题_Python类的继承问题
  7. 如何将一个向量投影到一个平面上_CameraLidar投影:2D3D导航
  8. java有几种变量_java有多少种变量?java类变量怎么使用?
  9. Python IO 基本编程示例
  10. 蓝桥杯之--神秘三位数