我想从多维数组中获取一个键

时间:2015-03-05 11:53:57

标签: php arrays multidimensional-array

我有一个类别和子类别的多维数组。 我想得到每个类别和子类别形式数组的ID。 我的阵列是这样的。

  

阵   (       [1] =>排列           (               [id] => 14               [name] =>第1类               [parent_id] => 13               [sub_menu] =>排列                   (                       [2] =>排列                           (                               [id] => 15                               [name] =>第2类                               [parent_id] => 14                               [sub_menu] =>排列                                   (                                       [6] =>排列                                           (                                               [id] => 19                                               [name] =>第6类                                               [parent_id] => 15                                               [sub_menu] =>排列                                                   (                                                   )                                           )                                   )                           )                       [4] =>排列                           (                               [id] => 17                               [name] =>第4类                               [parent_id] => 14                               [sub_menu] =>排列                                   (                                   )                           )                   )           )   )



public function get($data)
    {
        foreach($data as $key=>$value1)
        {
            if($key=='id'); 
              {
                $data= $value1['id'];
              }
            if(is_array($key))
            {
                $data=$this->get($kay);
            }
        }
        return $data;
    }
$val=$this->get($data);
print_r($val);




1 个答案:

答案 0 :(得分:0)

在上面的代码中,您正在循环(并因此触摸数组中的每个元素),但每次执行此操作时:

$data= $value1['id'];

或者这个:

$data=$this->get($kay);

(顺便说一句,误将$key误称为$kay

您覆盖$data的值。所以最好的情况是你得到最后一个被覆盖的$ id。 (您还可以在不同时间将键和值与数组混合在一起。)

假设你最后想要一个扁平数组和所有那些数组,这样的东西可能会这样做(这不是为了运行代码 - 你需要做一些调试):

public function get($data)
    {
        if ($data['id'])
            $rtn = array($data['id']);
        else
            $rtn = array();
        foreach($data as $v)
        {
            if(is_array($v))
            {
                $rtn = array_merge($rtn, $this->get($v));
            }
        }
        return $rtn;
    }
$val=$this->get($data);
print_r($val);

虽然这个应用程序并不是特别困难,但编写递归函数并不是任何编程的起始技能。因为看起来你对如何处理数组(没有递归)仍然有点朦胧,所以可能需要学习一些教程。