2013-05-07 74 views
0

我有多维数组。它可以达到N-水平。我想收集唯一的名字。从孩子名到父母。例如我需要这样多维数组提取名称多维数组

名称输出=> “运动/ Algemeen/techn.sp.ondgd/ondergoed达梅斯/运动BH”

。等级可以增加到N个数字。

[categories] => Array 
      (
       [0] => Array 
        (
         [@id] => 1 
         [name] => 78057 | Sport bh 
         [parent] => Array 
          (
           [@id] => 2 
           [name] => 7805 | ondergoed dames 
           [parent] => Array 
            (
             [@id] => 3 
             [name] => 780 | techn.sp.ondgd 
             [parent] => Array 
              (
               [@id] => 4 
               [name] => Algemeen 
               [parent] => Array 
                (
                 [@id] => 5 
                 [name] => Sport 
                ) 

              ) 

            ) 

          ) 

        ) 

      ) 
+0

而你尝试过什么到目前为止? – Rikesh 2013-05-07 10:28:47

+0

看到我可以使用foreach循环提取数据。但我不能预测水平。必须有一些最简单的方法来实现这一点。所以如果有人帮助我,那将会非常感激。 – Palanikumar 2013-05-07 10:42:14

+0

@Palanikumar至少你必须走低谷'foreach'! – powtac 2013-05-07 10:43:29

回答

1
$arrPush = array(); 
function iterator($arr){ 
    global $arrPush; 
    foreach($arr as $key => $val){ 
     if(is_array($val)) 
      iterator($val); 
     if($key == "name"){ 
      $str = explode("|", $val); 
      $arrPush[] = isset($str[1])?$str[1]:$str[0]; 
     } 
     //filter the $key and $val here and do what you want 
    } 
} 
iterator($sweet); 
$str = implode("/", array_reverse($arrPush)); 
echo $str; 

运动/ Algemeen/techn.sp.ondgd/ondergoed达梅斯/运动BH

1

就像那个(没有测试)

function namify($arr) { 
    foreach($arr as $cat) { 
     if(!empty($cat['parent']) && is_array($cat['parent'])) { 
      return $cat['name'].namify($cat['parent']); 
     } else { 
      return $cat['name']; 
     } 
    } 
} 

echo namify($categories);