2015-08-19 16 views
6

Büyük çok boyutlu dizilim var. Ve ondan belirli bir alt dizi bulmalıyım.
Bir yineleme işlevini kullanmayı denedim, ancak aslında değer döndürmüyor. Bana başka bir çözüm sunabilir mi?
İşte dizinin önizlemesi. İşteÇok boyutlu dizilimden belirli bir değer elde edin

Array 
(
    [key] => _6 
    [title] => <strong>face timeline</strong> 
    [data] => Array 
     (
      [url] => http://localhost/patient/face-timeline/ 
      [type] => content 
      [cid] => 2291 
      [timeline] => 0 
     ) 

    [children] => Array 
     (
      [0] => Array 
       (
        [key] => _2278 
        [title] => Post Op Visit 
       ) 

      [1] => Array 
       (
        [key] => _2277 
        [title] => Surgery 
       ) 

      [2] => Array 
       (
        [key] => _2276 
        [title] => Pre-Op 
       ) 

      [3] => Array 
       (
        [key] => _2275 
        [title] => Consultation 
       ) 

      [4] => Array 
       (
        [key] => _2274 
        [title] => Reseach 
       ) 

     ) 

) 

i Bu işlev değerlerini cevap vermiyor

function recursion($array,$postid) { 

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

     if((isset($value['data']['cid'])) && ($value['data']['cid'] == $postid)){ 

      $tmp = $value; 
       return $value; 

     } 
     if (is_array($value)) 
     { 

      recursion($value,$postid); 
     } 
    } 

} 

çalıştı budur: O dizinin itibaren

Array 
(
    [0] => Array 
     (
      [expanded] => 1 
      [key] => _1 
      [title] => New 
     ) 

    [1] => Array 
     (
      [key] => _2 
      [title] => Home 
     ) 

    [2] => Array 
     (
      [expanded] => 1 
      [key] => _3 
      [title] => Care 
      [children] => Array 
       (
        [0] => Array 
         (
          [expanded] => 1 
          [key] => _4 
          [title] => face 
          [children] => Array 
           (
            [0] => Array 
             (
              [key] => _5 
              [title] => new 
             ) 

            [1] => Array 
             (
              [key] => _6 
              [title] => <strong>face timeline</strong> 
              [data] => Array 
               (
                [url] => http://localhost/patient/face-timeline/ 

                [type] => content 
                [cid] => 2291 
                [timeline] => 0 
               ) 

              [children] => Array 
               (
                [0] => Array 
                 (
                  [key] => _2278 
                  [title] => Post Op Visit 
                 ) 

                [1] => Array 
                 (
                  [key] => _2277 
                  [title] => Surgery 
                 ) 

                [2] => Array 
                 (
                  [key] => _2276 
                  [title] => Pre-Op 
                 ) 

                [3] => Array 
                 (
                  [key] => _2275 
                  [title] => Consultation 
                 ) 

                [4] => Array 
                 (
                  [key] => _2274 
                  [title] => Reseach 
                 ) 

               ) 

             ) 

           ) 

         ) 

       ) 

     ) 

) 

i (aşağıda) bu dizi istiyorum.
Burada $postid 2291'dur. Yani ben arıyorum ve ben bu diziyi baskı alabiliyorum ama sadece belirli bir değer kullanmak bu almak istiyorsanız Buraya değerini dönmek can mümkün değildir link

+1

Kodunuz nerede? – artsylar

+0

Array örneğiyle lütfen kodu buraya ekleyin veya fiddle –

cevap

1

geçerli:

function recursive($your_array) 
    { 
     $newArray = []; 

     foreach ($your_array as $key => $val) { 
      if (array_keys($your_array) == 'children') { 
       foreach($val as $key2 => $val3){ 
        $newArray[] = recursive($val3); 
       } 
      } 
     } 
     print_r($newArray); 
    } 
+0

Daha fazla sayıda zaman çizelgesine sahibim ve bunun için çalışmıyor. –

+0

@milanpatel Şu anda çalışıyor mu? – aldrin27

+0

Hayır üzgünüm çalışmıyor. :( –

0

Bu Sonuç verirsiniz:

$searchedData = searchCustomRecursive('2291',$userdb); 

function searchCustomRecursive($searchString, $array, $previousArray= Array()){ 
    if(is_Array($array)){ 
     $newArray = recursive_array_search($searchString,$array); 
     if(is_Array($newArray)){ 
      searchCustomRecursive($searchString, $newArray,$array); 
     }else{ 
      print_r($previousArray); // Check your result here... 
      return $previousArray; 
     } 

    } 
} 

function recursive_array_search($needle,$haystack) { 
    foreach($haystack as $key=>$value) { 
     $current_key=$key; 
     if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) { 
      return $value; 
     } 
    } 
    return false; 
} 
İlgili konular