php,长而深的矩阵

标签 php algorithm

我有一个又深又长的数组(矩阵)。我只知道产品 ID。 如何找到产品的途径?

采样数组(但正如我所说,它可以很长很深):

Array(
        [apple] => Array(
                [new] => Array(
                        [0] => Array([id] => 1)
                        [1] => Array([id] => 2))
                [old] => Array(
                        [0] => Array([id] => 3)
                        [1] => Array([id] => 4))
            )
)

我有 id:3,我希望得到这个: 苹果,老,0

谢谢

最佳答案

你可以用这个宝贝:

function getById($id,$array,&$keys){
  foreach($array as $key => $value){
     if(is_array( $value )){
        $result = getById($id,$value,$keys);
        if($result == true){
          $keys[] = $key;
          return true;
        }
     }
     else if($key == 'id' && $value == $id){
       $keys[] = $key; // Optional, adds id to the result array
       return true;
     }
  }
  return false;
}
// USAGE:
$result_array = array();
getById( 3, $products, $result_array);
// RESULT (= $result_array)
Array
(
    [0] => id
    [1] => 0
    [2] => old
    [3] => apple
)

函数本身将在成功时返回true,在出错时返回false,您想要的数据将存储在第三个参数中。

您可以使用array_reverse()link , 反转顺序和 array_pop(), link , 删除最后一项 ('id')

关于php,长而深的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3356699/

相关文章:

php - htaccess 带有语言和页面参数的重定向 url

algorithm - 合并具有未知排序函数的数据

c++ - 结构的搜索 vector

Python Dijkstra k 最短路径

algorithm - 计算子矩形总和的算法也允许更新

php - 循环查询结果

java - Volley 库在发布请求时给出错误 500

php - Android 未收到 PHP 服务器的响应

c# - 二进制搜索算法随机生成的数组项不起作用

php - 4 个表之间的关系 Laravel 5.1