2015-08-19 14 views
6

Tôi có mảng đa chiều lớn. Và tôi phải tìm một mảng phụ cụ thể từ nó.
Tôi đã thử sử dụng một hàm đệ quy nhưng nó thực sự không trả về giá trị. Có ai cho tôi một giải pháp khác không.
Đây là bản xem trước của mảng.nhận giá trị cụ thể từ mảng đa chiều

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 
                 ) 

               ) 

             ) 

           ) 

         ) 

       ) 

     ) 

) 

Từ mảng mà tôi muốn mảng này (dưới đây):

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 
       ) 

     ) 

) 

Đây là những gì tôi đã cố gắng

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); 
     } 
    } 

} 

Chức năng này không được trở về giá trị.
Ở đây $postid2291. Đó là tôi đang tìm kiếm và tôi có thể in mảng đó, nhưng không thể có thể trả về giá trị Đây là link

+1

Mã của bạn ở đâu? – artsylar

+0

Với ví dụ về mảng, vui lòng thêm mã ở đây hoặc trong fiddle –

Trả lời

1

Nếu bạn muốn nhận được chỉ là một sử dụng giá trị cụ thể này:

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

Tôi có nhiều số dòng thời gian hơn và điều này không hoạt động đối với nó. –

+0

@milanpatel Bây giờ nó có hoạt động không? – aldrin27

+0

Không tiếc nó không hoạt động. : ( –

0

này sẽ cho bạn kết quả:

$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; 
} 
Các vấn đề liên quan