Cách chuyển mảng đa chiều thành mảng đối tượng và ngược lại

Xin chào các bạn!
Thỉnh thoảng khi làm php chúng ta sẽ cần chuyển mảng từ đối tượng sang đa chiều và ngược lại từ đa chiều sang đối tượng. Tôi xin chia sẻ với các bạn một cách để chuyển mảng đa chiều thành mảng hướng đối tượng và ngược lại. Đây cũng là cách mà tôi hay dùng.

bd2_6f5_636_330-1-original

Bước 1: các bạn bật trình soạn thảo bất kỳ và tạo một file có tên demo.php trong thư mục (www) ở localhost.
Bước 2: Giả sử các bạn có một mảng đa chiều làm đầu vào với nội dung như bên dưới:

<?php

$mang= array(
array('id' => 1001, 'ParentId' => NULL, 'Name' => 'Computing', 'Level' => 0),
array('id' => 1002, 'ParentId' => NULL, 'Name' => 'Cassettes & Vinyl', 'Level' => 0),
array('id' => 1003, 'ParentId' => 1001, 'Name' => 'CD Players', 'Level' => 1),
array('id' => 1004, 'ParentId' => 1002, 'Name' => 'CD Writers', 'Level' => 1),
array('id' => 1005, 'ParentId' => 1003, 'Name' => 'CD-ROM Drives', 'Level' => 2),
array('id' => 1006, 'ParentId' => 1004, 'Name' => 'Computing', 'Level' => 3)
);

Bước 3: chúng ta tạo 2 hàm có chức năng chuyển mảng đa chiều bên trên thành mảng đối tượng như sau (chúng ta sẽ sử dụng hàm array_map(__FUNCTION__, $d) ) cụ thể code của hàm này sẽ như sau:

<?php

function DaChieuToDoiTuong($d) {
if (is_array($d)) {
return (object) array_map(__FUNCTION__, $d);
}
else {
return $d;
}

 

Bước 4: chúng ta tiếp tục tạo một hàm có chức năng chuyển từ mảng đối tượng về mảng đa chiều , chúng ta sẽ sử dụng vòng lặp foreach để duyệt toàn bộ mạng cứ một cặp key và value nếu value tồn tại trong mảng thì chúng ta lại gọi dệ qui chính hàm chúng ta viết để gán cặp giá trí này vào mảng đa chiều, cụ thể code của hàm này như sau:

<?php

function DoiTuongToDaChieu($result)
{
$array = array();
foreach ($result as $key=>$value)
{
if (is_array($value))
{
$array[$key]=DoiTuongToDaChieu($value);
}
else
{
if (is_object($value))
{
$array[$key]=DoiTuongToDaChieu($value);
} else {

$array[$key]=$value;
}
}
}
return $array;
}

 

ok! We done!

Bài viết liên quan