2015-08-05 21 views
7

Tôi có một mảng như dưới đâyChuyển đổi quan trọng mảng vào mảng đa chiều

$db_resources = array('till' => array(
'left.btn' => 'Left button', 
'left.text' => 'Left text', 
'left.input.text' => 'Left input text', 
'left.input.checkbox' => 'Left input checkbox'   
)); 

tôi cần phải chuyển đổi mảng này tự động như dưới đây

'till' => array(
    'left' => array(
     'btn' => 'Left button', 
     'text' => 'Left text', 
     'input' => array(
      'text' => 'Left input text', 
      'checkbox' => 'Left input checkbox' 
     ) 
    ) 
) 

tôi đã cố gắng phím với nổ. nó hoạt động nếu tất cả khóa chỉ có một ".". Nhưng chìa khóa có năng động. vì vậy xin vui lòng hep tôi để chuyển đổi mảng động. Tôi cố gắng này Dưới Mã

$label_array = array(); 
foreach($db_resources as $keey => $db_resources2){ 
    if (strpos($keey,'.') !== false) { 
     $array_key = explode('.',$keey);  
     $frst_key = array_shift($array_key); 
     if(count($array_key) > 1){ 
      $label_array[$frst_key][implode('.',$array_key)] = $db_resources2; 
      //Need to change here 
     }else{ 
      $label_array[$frst_key][implode('.',$array_key)] = $db_resources2; 
     } 
    } 
} 
+0

Và những gì bạn đã cố gắng cho đến nay? Đăng nỗ lực của bạn quá –

+0

@Uchiha - tôi đã chỉnh sửa Câu hỏi. Và cập nhật mã của tôi ở đây – Jegan

+0

sử dụng 'for_each' với' $ array_key' kể từ khi phát nổ trả về một mảng – Sayed

Trả lời

1

Có thể có nhiều cách thanh lịch để đi về nó, nhưng đây là một ví dụ về làm việc đó với chức năng helper đệ quy:

function generateNew($array, $keys, $currentIndex, $value) 
    { 
     if ($currentIndex == count($keys) - 1) 
     { 
      $array[$keys[$currentIndex]] = $value; 
     } 
     else 
     { 
      if (!isset($array[$keys[$currentIndex]])) 
      { 
       $array[$keys[$currentIndex]] = array(); 
      } 

      $array[$keys[$currentIndex]] = generateNew($array[$keys[$currentIndex]], $keys, $currentIndex + 1, $value); 
     } 

     return $array; 
    } 

    $result = array(); 
    // $temp equals your original value array here... 
    foreach ($temp as $combinedKey => $value) 
    { 
     $result = generateNew($result, explode(".", $combinedKey), 0, $value); 
    } 
+0

Tôi nghĩ đây là một câu trả lời hay. – Sayed

+0

@ jjjjav Cảm ơn .. Nó cũng làm việc cho mảng đa chiều của tôi. – Jegan

Các vấn đề liên quan