Hướng dẫn how to convert multidimensional object to array in php? - làm thế nào để chuyển đổi đối tượng đa chiều thành mảng trong php?

Đây là một câu hỏi cũ, nhưng gần đây tôi đã gặp phải điều này và đưa ra giải pháp của riêng tôi.

array_walk_recursive($array, function(&$item){
    if(is_object($item)) $item = (array)$item;
});

Bây giờ nếu $array là một đối tượng, bạn có thể chọn nó vào một mảng trước khi đặt nó vào array_walk_recursive:

$array = (array)$object;
array_walk_recursive($array, function(&$item){
    if(is_object($item)) $item = (array)$item;
});

Và ví dụ nhỏ:

array_walk_recursive($array,function(&$item){if(is_object($item))$item=(array)$item;});

Trong trường hợp của tôi, tôi đã có một mảng các đối tượng STDClass từ nguồn bên thứ 3 có trường/thuộc tính có giá trị tôi cần sử dụng làm tài liệu tham khảo để tìm STDClass chứa của nó để tôi có thể truy cập dữ liệu khác trong phần tử đó. Về cơ bản so sánh các khóa lồng nhau trong 2 bộ dữ liệu.

Tôi phải làm điều này nhiều lần, vì vậy tôi không muốn tìm kiếm nó cho từng mục tôi cần tìm. Giải pháp cho vấn đề đó thường là array_column, nhưng điều đó không hoạt động trên các đối tượng. Vì vậy, tôi đã làm những điều trên đầu tiên.

Chuyển đổi (các) đối tượng STDClass đa chiều thành mảng thành mảng.

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

Để chuyển đổi mảng PHP thành JSON, hãy sử dụng hàm json_encode (). JSON_ENCODE () là hàm PHP tích hợp để chuyển đổi một mảng thành JSON. Hàm json_encode () chuyển đổi kiểu dữ liệu hỗ trợ PHP thành chuỗi được định dạng JSON để được trả về do hoạt động mã hóa JSON.
/**
* Chuyển đổi (các) đối tượng STDClass đa chiều thành mảng thành mảng thành mảng
*
* @param $ Đối tượng
* @return mảng
*/
PrivateFunctionObjectToArray ($ Object) { function objectToArray($object) {
if (is_object ($ object)) { (is_object($object)) {
$ object = get_object_vars ($ object);object = get_object_vars($object);
}
if (is_array ($ object)) { (is_array($object)) {
return mảng_map (mảng ($ this, 'objectToArray'), $ object); array_map(array($this, 'objectToArray'), $object);
} khác {else {
trả về đối tượng $; $object;
}
}

Tiết lộ: Bài viết này có thể chứa các liên kết liên kết và bất kỳ doanh số nào được thực hiện thông qua các liên kết như vậy sẽ thưởng cho chúng tôi một khoản hoa hồng nhỏ, mà không phải trả thêm chi phí cho bạn. Đọc thêm về công bố liên kết ở đây.

Có một vài cách để chuyển đổi một mảng đa chiều sang đối tượng. Nếu bạn là một nhà phát triển PHP thì bạn đã nhận thấy mảng đó sang chuyển đổi đối tượng là một nhu cầu chung. Vì vậy, chúng tôi đề cập đến ba phương pháp để chuyển đổi một mảng liên kết đa chiều hoặc đơn giản thành đối tượng.

Giống như bạn, chúng tôi cũng không phải là một fan hâm mộ của việc gõ niềng răng và trích dẫn xung quanh các phím mảng. Nó làm cho chúng tôi đánh thêm phím phím. Hơn nữa, sử dụng mảng không cho phép mã luôn gọn gàng và dễ đọc hơn so với các đối tượng. Nguyên nhân của những lý do này, chúng tôi luôn thích đối tượng hơn mảng & nbsp;

Hướng dẫn how to convert multidimensional object to array in php? - làm thế nào để chuyển đổi đối tượng đa chiều thành mảng trong php?

Đúc mảng không lồng vào đối tượng

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$arr=array(arr=array(

    'red'=>'ff0000','red'=>'ff0000',

    'green'=>'00ff00','green'=>'00ff00',

    'blue'=>'0000ff','blue'=> '0000ff',

);;

$obj=(object)$arr;obj=(object)$arr;

print_r($obj);($obj);

/*

Đầu ra

Đối tượng StdClass

.

& nbsp; & nbsp; & nbsp; & nbsp; [red] => ff0000

& nbsp; & nbsp; & nbsp; & nbsp; [Green] => 00ff00

& nbsp; & nbsp; & nbsp; & nbsp; [blue] => 0000ff

)

*/

// sử dụng nó như

echo$obj->green;$obj->green;

Đây là cách ưa thích nhất để chuyển đổi & nbsp; một mảng sang đối tượng. Nhưng nếu bất kỳ chỉ khi mảng không đa chiều. Nói cách khác, nó không phải là một mảng lồng nhau (mảng trong mảng & nbsp; mảng). Nếu bạn đã làm như vậy thì chỉ có các phím cấp cao nhất => giá trị của mảng sẽ được chuyển đổi thành đối tượng.

1. Mảng đa chiều sang chuyển đổi đối tượng bằng cách sử dụng mã hóa/giải mã JSON

Một sự kết hợp của các chức năng mã hóa và giải mã PHP JSON có thể thực hiện chuyển đổi một cách kỳ diệu.

$obj=json_decode(json_encode($array));obj=json_decode(json_encode($array));

Đầu tiên, json_encode($array) chuyển đổi toàn bộ mảng đa chiều thành chuỗi JSON. Sau đó, json_decode($string) sẽ chuyển đổi chuỗi JSON thành một đối tượng STDCLASS.

Một số nhà phát triển cho rằng phương pháp này có mối quan tâm hiệu suất. Tuy nhiên, chúng tôi không có kết quả điểm chuẩn nào để kiểm tra tương tự. Mặc dù vậy, chúng tôi sử dụng rộng rãi các hàm JSON để chuyển đổi đối tượng.

Ngoài ra, hãy kiểm tra cách thay đổi phím mảng mà không thay đổi thứ tự trong PHP.

2. Chuyển đổi & nbsp; mảng đa chiều sang đối tượng bằng Array_map

functionmap_array_to_object($arr){map_array_to_object($arr){

    return(is_array($arr)?(object)array_map(__FUNCTION__,$arr):$arr);return(is_array($arr)?(object)array_map( __FUNCTION__,$arr):$arr);

}

$obj=map_array_to_object($array);obj=map_array_to_object($array);

Đây là một đối tượng đúc cùng với hằng số ma thuật php php mảng () và __function__. Ngoài ra, hãy biết rằng câu lệnh trả lại phải chứa điều kiện ternary khác, việc chuyển đổi sẽ thất bại. Ngoài ra, sử dụng & nbsp; __ phương thức__ thay vì & nbsp; __ function__ nếu bạn sử dụng chức năng bên trong một lớp.

Nếu bạn có một mảng lớn các đối tượng thì bài viết này có thể giúp bạn tìm & nbsp; đối tượng theo giá trị. Bạn cũng có thể trích xuất một mảng từ một tập hợp các phím phù hợp/loại trừ.

3. Hàm tùy chỉnh để chuyển đổi & nbsp; mảng đa chiều sang đối tượng

Dưới đây là một chức năng bổ sung & nbsp; cho một mảng đa chiều sang chuyển đổi đối tượng. Hơn nữa, điều này rất hữu ích nếu mảng là một loại hỗn hợp. Giống như nó đã lập chỉ mục các khóa ở cấp độ & nbsp; Top & nbsp; cấp độ hoặc thêm. Kiểm tra chức năng và ví dụ sử dụng:

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

functionrecursive_convert_array_to_obj($arr){recursive_convert_array_to_obj($arr){

    if(is_array($arr)){if(is_array($arr)){

        $new_arr=array();$new_arr= array();

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;foreach($arr as$k=>$v){

            if(is_integer($k)){if (is_integer($k)){

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;// Needs this if you have indexed keys at the top level in the array

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ o-> index {1}// and want to utilize the indexes: eg. $o->index{1}

                $new_arr['index'][$k]=recursive_convert_array_to_obj($v);$new_arr['index'][$k]=recursive_convert_array_to_obj($v);

            }}

            else{else{

                $new_arr[$k]=recursive_convert_array_to_obj($v);$new_arr[$k]=recursive_convert_array_to_obj($v);

            }}

        }}

        return(object)$new_arr;return(object)$new_arr;

    }}

& nbsp; & nbsp; & nbsp; & nbsp; // other duy trì loại của $ mảng// else maintain the type of $arr

    return$arr;return $arr;

}

$arr=array(arr=array(

    'opacity'=>'0.5','opacity'=>'0.5',

    'white','white',

    'black','black',

    'colors'=>array('White','Black','Red','Green','Blue'),'colors' =>array('White','Black','Red','Green','Blue'),

    'red'=>array('r'=>'ff','g'=>'00','b'=>'00'),'red'=>array('r'=> 'ff','g'=>'00','b'=>'00'),

    'green'=>array('r'=>'00','g'=>'ff','b'=>'00'),'green'=>array('r'=>'00', 'g'=>'ff','b'=>'00'),

    'blue'=>array('r'=>'00','g'=>'00','b'=>'ff'),'blue'=>array('r'=>'00','g'=> '00','b'=>'ff'),

);;

$obj=recursive_convert_array_to_obj($arr);obj=recursive_convert_array_to_obj($arr);

print_r($obj);($obj);

/*

Đối tượng StdClass

.

& nbsp; & nbsp; & nbsp; & nbsp; [opacity] => 0,5

& nbsp; & nbsp; & nbsp; & nbsp; [index] => mảng

        (

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

        )

& nbsp; & nbsp; & nbsp; & nbsp; [colors] => đối tượng stdclass

        (

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

                (

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

                )

        )

& nbsp; & nbsp; & nbsp; & nbsp; [màu đỏ] => đối tượng stdclass

        (

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

        )

& nbsp; & nbsp; & nbsp; & nbsp; [màu xanh lá cây] => đối tượng stdclass

        (

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

        )

& nbsp; & nbsp; & nbsp; & nbsp; [blue] => đối tượng stdclass

        (

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

        )

)

*/

Echo $ obj-> red-> g; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;$obj->red->g;            // 00

echo $ obj-> opacity; & nbsp; & nbsp; // 0,5 $obj->opacity;           // 0.5

Echo $ obj-> index {1}; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;$obj->index{1};          // black

echo $ obj-> colors-> index {0}; & nbsp; & nbsp; // white $obj->colors->index{0};  // White

Ở đây, chúng tôi đang di chuyển tất cả các khóa được lập chỉ mục dưới một thuộc tính có tên ‘Index, và sau đó chuyển đổi mảng thành đối tượng. Chúng tôi đã làm như vậy bởi vì cả ký hiệu $ obj-> 1 nor & nbsp; $ obj [0] đều hoạt động cũng như cả hai lỗi sử dụng PHP. Nhưng ký hiệu đối tượng $ obj-> index {0} trả về giá trị dự kiến.

Cuối cùng, đó là ba cách khác nhau để & nbsp; chuyển đổi một mảng đa chiều sang đối tượng. Cái đầu tiên thực sự phù hợp cho một mảng kết hợp đơn giản. & Nbsp; hai cách tiếp theo là những cách hoàn hảo cho & nbsp; một mảng đa chiều sang chuyển đổi đối tượng. Tuy nhiên, cái cuối cùng cung cấp cho bạn sự linh hoạt hơn để vận hành một bản gõ hỗn hợp & nbsp; mảng & nbsp; như một đối tượng.

Ngoài ra, có thể có các phương pháp hoặc biến thể khác của phương pháp cuối cùng cho cùng một. Chúng tôi muốn biết về họ. Bạn có bất kỳ hoặc có bất kỳ mối quan tâm nào về mảng và đối tượng PHP? Hãy cho chúng tôi biết thông qua mẫu bình luận được đưa ra.

Làm thế nào để chuyển đổi mảng đa chiều sang đối tượng trong PHP?

Php mảng: kết hợp, đa chiều $ get_object = json_decode (json_encode ($ mảng)); Đầu tiên, json_encode ($ mảng) chuyển đổi toàn bộ mảng đa chiều thành chuỗi JSON. Sau đó, JSON_DECODE ($ String) sẽ chuyển đổi chuỗi JSON thành một đối tượng STDCLASS.$get_object = json_decode(json_encode($array)); First, the json_encode($array) converts the entire multi-dimensional array to a JSON string. Then the json_decode($string) will convert the JSON string to a stdClass object.

Php mảng đa chiều có phải không?

Một mảng đa chiều là một mảng chứa một hoặc nhiều mảng. PHP hỗ trợ các mảng đa chiều là hai, ba, bốn, năm hoặc nhiều cấp độ sâu. Tuy nhiên, các mảng sâu hơn ba cấp độ khó có thể quản lý đối với hầu hết mọi người.PHP supports multidimensional arrays that are two, three, four, five, or more levels deep. However, arrays more than three levels deep are hard to manage for most people.

Làm thế nào để chuyển đổi mảng đa chiều sang JSON trong PHP?

Để chuyển đổi mảng PHP thành JSON, hãy sử dụng hàm json_encode ().JSON_ENCODE () là hàm PHP tích hợp để chuyển đổi một mảng thành JSON.Hàm json_encode () chuyển đổi kiểu dữ liệu hỗ trợ PHP thành chuỗi được định dạng JSON để được trả về do hoạt động mã hóa JSON.use the json_encode() function. The json_encode() is a built-in PHP function that converts an array to json. The json_encode() function converts PHP-supported data type into JSON formatted string to be returned due to JSON encode operation.

Việc sử dụng mảng đa chiều trong PHP là gì?

Mảng đa chiều php còn được gọi là mảng mảng.Nó cho phép bạn lưu trữ dữ liệu bảng trong một mảng.Mảng đa chiều php có thể được biểu diễn dưới dạng ma trận được biểu thị bằng cột Row *.allows you to store tabular data in an array. PHP multidimensional array can be represented in the form of matrix which is represented by row * column.