Mẹo Chuyển mảng thành object php ✅

Kinh Nghiệm về Chuyển mảng thành object php Chi Tiết

Khoa Minh Hoàng đang tìm kiếm từ khóa Chuyển mảng thành object php được Update vào lúc : 2022-09-30 05:54:21 . Với phương châm chia sẻ Mẹo Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi Read Post vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Ad lý giải và hướng dẫn lại nha.

answer

Nội dung chính
    Kiểm tra 1: Mảng phẳngKiểm tra 2: Mảng đối tượngBài kiểm tra 3: Đối tượng

15

Chuyển mảng thành object php

Cái này thao tác cho tôi

function array_to_obj($array, &$obj) foreach ($array as $key => $value) if (is_array($value)) $obj->$key = new stdClass(); array_to_obj($value, $obj->$key); else $obj->$key = $value; return $obj; function arrayToObject($array) $object= new stdClass(); return array_to_obj($array,$object);

sử dụng :

$myobject = arrayToObject($array); print_r($myobject);

trả về:

[127] => stdClass Object ( [status] => Have you ever created a really great looking website design ) [128] => stdClass Object ( [status] => Figure A. Meta's horizontal scrollbars showing up on a 1024x768 screen resolution. ) [129] => stdClass Object ( [status] => The other day work, I had some spare time )

như thường lệ, bạn hoàn toàn có thể lặp nó như sau:

foreach($myobject as $obj) echo $obj->status;

15 hữu ích 2 phản hồi chia sẻ

answer

477

Chuyển mảng thành object php

Trong trường hợp đơn giản nhất, có lẽ rằng đủ để "truyền" mảng thành một đối tượng:

$object = (object) $array;

Một tùy chọn khác là khởi tạo một lớp tiêu chuẩn dưới dạng một biến và lặp qua mảng của bạn trong khi gán lại những giá trị:

$object = new stdClass(); foreach ($array as $key => $value) $object->$key = $value;

Như Edson Medina đã chỉ ra, một giải pháp thực sự sạch sẽ là sử dụng những json_chức năng tích hợp:

$object = json_decode(json_encode($array), FALSE);

Điều này cũng (đệ quy) quy đổi tất cả những mảng con của bạn thành những đối tượng mà bạn hoàn toàn có thể muốn hoặc không thích. Thật rủi ro, nó có hiệu suất 2-3 lần so với phương pháp lặp.

Cảnh báo! (cảm ơn Ultra đã phản hồi):

json_decode trên những môi trường tự nhiên thiên nhiên rất khác nhau quy đổi tài liệu UTF-8 theo những phương pháp rất khác nhau. Cuối cùng, tôi nhận được những giá trị '240,00' tại địa phương và '240' khi sản xuất - nhà phân phối lớn. Thay đổi nếu quy đổi không thành công, chuỗi được trả về là NULL

477 hữu ích 5 phản hồi chia sẻ

answer

146

Chuyển mảng thành object php

bạn chỉ hoàn toàn có thể sử dụng kiểu truyền để quy đổi một mảng thành đối tượng.

// *convert array to object* Array([id]=> 321313[username]=>shahbaz) $object = (object) $array_name; //now it is converted to object and you can access it. echo $object->username;

146 hữu ích 1 phản hồi chia sẻ

answer

93

Chuyển mảng thành object php

Hack nhanh:

// assuming $var is a multidimensional array $obj = json_decode (json_encode ($var), FALSE);

Không xinh, nhưng hoạt động và sinh hoạt giải trí.

93 hữu ích 5 phản hồi chia sẻ

answer

93

Chuyển mảng thành object php

Dưới đây là ba cách:

Giả mạo một đối tượng thực sự:

class convert public $varible; public function __construct($array) $this = $array; public static function toObject($array) $array = new convert($array); return $array;

Chuyển đổi mảng thành một đối tượng bằng phương pháp chuyển nó thành một đối tượng:

$array = array( // ... ); $object = (object) $array;

Chuyển đổi thủ công mảng thành một đối tượng:

$object = object; foreach ($arr as $key => $value) $object->$key = $value;

93 hữu ích 5 phản hồi chia sẻ

answer

83

Chuyển mảng thành object php

Cách thuận tiện và đơn giản sẽ là

$object = (object)$array;

Nhưng đó không phải là vấn đề bạn muốn. Nếu bạn muốn những đối tượng bạn muốn đạt được một chiếc gì đó, nhưng điều đó bị thiếu trong thắc mắc này. Sử dụng những đối tượng chỉ vì nguyên do sử dụng những đối tượng không còn ý nghĩa.

83 hữu ích 5 phản hồi chia sẻ

answer

29

Chuyển mảng thành object php

Cách đơn giản, Điều này cũng tiếp tục tạo một đối tượng cho những mảng đệ quy:

$object = json_decode(json_encode((object) $yourArray), FALSE);

29 hữu ích 2 phản hồi chia sẻ

answer

23

Chuyển mảng thành object php

Tùy thuộc vào nơi bạn cần điều đó và làm thế nào để truy cập vào đối tượng, có nhiều cách thức rất khác nhau để làm điều đó.

Ví dụ: chỉ việc gõ nó

$object = (object) $yourArray;

Tuy nhiên, cách tương thích nhất là sử dụng một phương thức tiện ích (chưa phải là một phần của PHP) thực hiện việc đúc PHP tiêu chuẩn nhờ vào một chuỗi xác định loại (hoặc bằng phương pháp bỏ qua nó chỉ tham chiếu giá trị):

/** * dereference a value and optionally setting its type * * @param mixed $mixed * @param null $type (optional) * * @return mixed $mixed set as $type */ function rettype($mixed, $type = NULL) $type === NULL

Ví dụ sử dụng trong trường hợp của bạn ( Bản demo trực tuyến ):

$yourArray = Array('status' => 'Figure A. ...'); echo rettype($yourArray, 'object')->status; // prints "Figure A. ..."

23 hữu ích 1 phản hồi chia sẻ

answer

15

Chuyển mảng thành object php

Không có phương pháp tích hợp nào để thực hiện theo như tôi biết, nhưng nó dễ như một vòng lặp đơn giản:

$obj= new stdClass(); foreach ($array as $k=> $v) $obj->$k = $v;

Bạn hoàn toàn có thể lý giải về điều đó nếu bạn cần nó để xây dựng đối tượng của tớ một cách đệ quy.

15 hữu ích 0 phản hồi chia sẻ

answer

8

Chuyển mảng thành object php

Trên thực tế nếu bạn muốn sử dụng điều này với những mảng đa chiều, bạn sẽ muốn sử dụng một số trong những đệ quy.

static public function array_to_object(array $array) foreach($array as $key => $value) if(is_array($value)) $array[$key] = self::array_to_object($value); return (object)$array;

8 hữu ích 0 phản hồi chia sẻ

answer

6

Chuyển mảng thành object php

Tôi chắc như đinh sẽ đi với một cách sạch sẽ như vậy này:

from_array($payload); public function from_array($array) foreach(get_object_vars($this) as $attrName => $attrValue) $this->$attrName = $array[$attrName]; public function say_hi () print "hi my name is $this->name"; print_r($_POST); $mike = new Person($_POST); $mike->say_hi(); ?>

nếu bạn gửi:

Chuyển mảng thành object php

bạn sẽ nhận được điều này:

Chuyển mảng thành object php

Tôi thấy điều này hợp lý hơn khi so sánh những câu vấn đáp trên từ những Đối tượng nên được sử dụng cho mục tiêu mà chúng được tạo ra (đóng gói những đối tượng nhỏ dễ thương).

Ngoài ra, sử dụng get_object_vars đảm nói rằng không còn thuộc tính tương hỗ update nào được tạo trong Đối tượng bị thao túng (bạn không thích một chiếc xe mang tên mái ấm gia đình cũng như một người cư xử với 4 bánh xe).

6 hữu ích 1 phản hồi chia sẻ

answer

5

Chuyển mảng thành object php

Bạn cũng hoàn toàn có thể sử dụng ArrayObject, ví dụ:

1,"two"=>2,"three"=>3), array("one"=>1,"two"=>2,"three"=>3) ); $o = new ArrayObject($arr); echo $o->offsetGet(2)["two"],"n"; foreach ($o as $key=>$val) if (is_array($val)) foreach($val as $k => $v) echo $k . ' => ' . $v,"n"; else echo $val,"n"; ?> //Output: 2 test one => 1 two => 2 three => 3 one => 1 two => 2 three => 3

5 hữu ích 1 phản hồi chia sẻ

answer

5

Chuyển mảng thành object php

đệ quy là bạn của bạn:

function __toObject(Array $arr) $obj = new stdClass(); foreach($arr as $key=>$val) if (is_array($val)) $val = __toObject($val); $obj->$key = $val; return $obj;

5 hữu ích 0 phản hồi chia sẻ

answer

5

Chuyển mảng thành object php

Cái tôi sử dụng (nó là một thành viên trong lớp):

const MAX_LEVEL = 5; // change it as needed public function arrayToObject($a, $level=0) if(!is_array($a)) throw new InvalidArgumentException(sprintf('Type %s cannot be cast, array expected', gettype($a))); if($level > self::MAX_LEVEL) throw new OverflowException(sprintf('%s stack overflow: %d exceeds max recursion level', __METHOD__, $level)); $o = new stdClass(); foreach($a as $key => $value) if(is_array($value)) // convert value recursively $value = $this->arrayToObject($value, $level+1); $o->$key = $value; return $o;

5 hữu ích 0 phản hồi chia sẻ

answer

5

Chuyển mảng thành object php

Ít phức tạp nhưng dễ mở rộng kỹ thuật:

Giả sử bạn có một mảng

$a = [ 'name' => 'ankit', 'age' => '33', 'dob' => '1984-04-12' ];

Giả sử bạn có một lớp Person hoàn toàn có thể có nhiều hoặc ít thuộc tính từ mảng này. ví dụ

class Person private $name; private $dob; private $age; private $company; private $city;

Nếu bạn vẫn muốn thay đổi mảng của bạn thành đối tượng người. Bạn hoàn toàn có thể sử dụng Lớp ArrayIterator.

$arrayIterator = new ArrayIterator($a); // Pass your array in the argument.

Bây giờ bạn có đối tượng lặp.

Tạo một lớp FilterIterator mở rộng; nơi bạn phải xác định phương thức trừu tượng đồng ý. Làm theo ví dụ

class PersonIterator extends FilterIterator public function accept() return property_exists('Person', parent::current());

Sự khắc phục ở trên sẽ ràng buộc tài sản chỉ khi nó tồn tại trong lớp.

Thêm một phương thức nữa trong lớp PersonIterator

public function getObject(Person $object) foreach ($this as $key => $value) $object->'set' . underscoreToCamelCase($key)($value); return $object;

Hãy chắc như đinh rằng bạn có những trình biến hóa được định nghĩa trong lớp của bạn. Bây giờ bạn đã sẵn sàng để gọi những hàm này, nơi bạn muốn tạo đối tượng.

$arrayiterator = new ArrayIterator($a); $personIterator = new PersonIterator($arrayiterator); $personIterator->getObject(); // this will return your Person Object.

5 hữu ích 0 phản hồi chia sẻ

answer

4

Chuyển mảng thành object php

Dễ dàng:

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

Thí dụ:

$array = array( 'key' => array( 'k' => 'value', ), 'group' => array('a', 'b', 'c') ); $object = json_decode(json_encode($array));

Sau đó, điều sau đây là đúng:

$object->key->k === 'value'; $object->group === array('a', 'b', 'c')

4 hữu ích 2 phản hồi chia sẻ

answer

4

Chuyển mảng thành object php

sử dụng hiệu suất cao này mà tôi đã thực hiện:

function buildObject($class,$data) $object = new $class; foreach($data as $key=>$value) if(property_exists($class,$key)) $object->'set'.ucfirst($key)($value); return $object;

Sử dụng:

$myObject = buildObject('MyClassName',$myArray);

4 hữu ích 1 phản hồi chia sẻ

answer

4

Chuyển mảng thành object php

Điều này đòi hỏi PHP7 vì tôi đã chọn sử dụng hàm lambda để khóa 'hàm bên trong' trong hàm chính. Hàm lambda được gọi đệ quy, do đó cần: "use (& $ Internalfunc)". Bạn hoàn toàn có thể làm điều đó trong PHP5 nhưng không thể ẩn phần bên trong.

function convertArray2Object($defs) $innerfunc = function ($a) use ( &$innerfunc ) return (is_array($a)) ? (object) array_map($innerfunc, $a) : $a; ; return (object) array_map($innerfunc, $defs);

4 hữu ích 0 phản hồi chia sẻ

answer

2

Chuyển mảng thành object php

Bạn cũng hoàn toàn có thể làm điều này bằng phương pháp thêm (đối tượng) bên trái biến để tạo một đối tượng mới.

" text" ); var_dump($a); $b = (object)$a; var_dump($b); var_dump($b->status);

://codepad.org/9YmD1KsU

2 hữu ích 1 phản hồi chia sẻ

answer

2

Chuyển mảng thành object php

Việc sử dụng json_encodelà có vấn đề vì cách nó xử lý tài liệu không phải UTF-8. Điều đáng để ý quan tâm là phương thức json_encode/ json_encodecũng để những mảng không link thành mảng. Điều này hoàn toàn có thể hoặc không thể là những gì bạn muốn. Gần đây tôi đã ở vị trí nên phải tạo lại hiệu suất cao của giải pháp này nhưng không sử dụng những json_chức năng. Đây là những gì tôi nghĩ ra:

/** * Returns true if the array has only integer keys */ function isArrayAssociative(array $array) return (bool)count(array_filter(array_keys($array), 'is_string')); /** * Converts an array to an object, but leaves non-associative arrays as arrays. * This is the same logic that `json_decode(json_encode($arr), false)` uses. */ function arrayToObject(array $array, $maxDepth = 10) if($maxDepth == 0) return $array; if(isArrayAssociative($array)) $newObject = new stdClass; foreach ($array as $key => $value) if(is_array($value)) $newObject->$key = arrayToObject($value, $maxDepth - 1); else $newObject->$key = $value; return $newObject; else $newArray = array(); foreach ($array as $value) if(is_array($value)) $newArray[] = arrayToObject($value, $maxDepth - 1); else $newArray[] = $value; return $newArray;

2 hữu ích 0 phản hồi chia sẻ

answer

2

Chuyển mảng thành object php

Phương pháp tốt nhất trên THẾ GIỚI :)

function arrayToObject($conArray) if(is_array($conArray)) /* * Return array converted to object * Using __FUNCTION__ (Magic constant) * for recursive call */ return (object) array_map(__FUNCTION__, $conArray); else // Return object return $conArray;

Nếu bạn sử dụng những phương pháp rất khác nhau, bạn sẽ có vấn đề. Đây là phương pháp tốt nhất. Bạn đã từng thấy.

2 hữu ích 0 phản hồi chia sẻ

answer

2

Chuyển mảng thành object php

lót

$object= json_decode(json_encode($result_array, JSON_FORCE_OBJECT));

2 hữu ích 1 phản hồi chia sẻ

answer

1

Chuyển mảng thành object php

CakePHP có một lớp đệ quy :: lớp ánh xạ về cơ bản ánh xạ một mảng vào một đối tượng. Bạn hoàn toàn có thể nên phải thay đổi những mảng trông ra làm sao để làm cho đối tượng trông in như bạn muốn.

://api.cakephp.org/view_source/set/#line-158

Trường hợp xấu nhất, bạn hoàn toàn có thể đã có được một vài ý tưởng từ hiệu suất cao này.

1 hữu ích 0 phản hồi chia sẻ

answer

1

Chuyển mảng thành object php

Rõ ràng chỉ là phép ngoại suy một số trong những câu vấn đáp của một số trong những người dân khác, nhưng đây là hàm đệ quy sẽ quy đổi bất kỳ mảng chiều nào thành một đối tượng:

function convert_array_to_object($array) $obj= new stdClass(); foreach ($array as $k=> $v) if (is_array($v)) $v = convert_array_to_object($v); $obj->strtolower($k) = $v; return $obj;

Và hãy nhớ rằng nếu mảng có những khóa số, chúng vẫn hoàn toàn có thể được tham chiếu trong đối tượng kết quả bằng phương pháp sử dụng (ví dụ $obj->prop->4->prop:)

1 hữu ích 0 phản hồi chia sẻ

answer

1

Chuyển mảng thành object php

Lấy cảm hứng từ tất cả những mã này, tôi đã nỗ lực tạo một phiên bản nâng cao với sự tương hỗ: tên lớp rõ ràng, tránh phương thức hàm tạo, mẫu 'đậu' và chính sách nghiêm ngặt (chỉ đặt những thuộc tính hiện có):

class Util static function arrayToObject($array, $class = 'stdClass', $strict = false) if (!is_array($array)) return $array; //create an instance of an class without calling class's constructor $object = unserialize( sprintf( 'O:%d:"%s":0:', strlen($class), $class ) ); if (is_array($array) && count($array) > 0) foreach ($array as $name => $value) $name = strtolower(trim($name)); if (!empty($name)) if(method_exists($object, 'set'.$name)) $object->'set'.$name(Util::arrayToObject($value)); else if(($strict)) if(property_exists($class, $name)) $object->$name = Util::arrayToObject($value); else $object->$name = Util::arrayToObject($value); return $object; else return FALSE;

1 hữu ích 0 phản hồi chia sẻ

answer

1

Chuyển mảng thành object php

Chức năng này hoạt động và sinh hoạt giải trí tương tự như json_decode(json_encode($arr), false).

function arrayToObject(array $arr) $flat = array_keys($arr) === range(0, count($arr) - 1); $out = $flat ? [] : new stdClass(); foreach ($arr as $key => $value) $temp = is_array($value) ? $this->arrayToObject($value) : $value; if ($flat) $out[] = $temp; else $out->$key = $temp; return $out;

Kiểm tra

Kiểm tra 1: Mảng phẳng

$arr = ["a", "b", "c"]; var_export(json_decode(json_encode($arr))); var_export($this->arrayToObject($arr));

Đầu ra:

array( 0 => 'a', 1 => 'b', 2 => 'c', ) array( 0 => 'a', 1 => 'b', 2 => 'c', )

Kiểm tra 2: Mảng đối tượng

$arr = [["a" => 1], ["a" => 1], ["a" => 1]]; var_export(json_decode(json_encode($arr))); var_export($this->arrayToObject($arr));

Đầu ra:

array( 0 => stdClass::__set_state(array('a' => 1,)), 1 => stdClass::__set_state(array('a' => 1,)), 2 => stdClass::__set_state(array('a' => 1,)), ) array( 0 => stdClass::__set_state(array('a' => 1,)), 1 => stdClass::__set_state(array('a' => 1,)), 2 => stdClass::__set_state(array('a' => 1,)), )

Bài kiểm tra 3: Đối tượng

$arr = ["a" => 1]; var_export(json_decode($arr)); var_export($this->arrayToObject($arr));

Đầu ra:

stdClass::__set_state(array('a' => 1,)) stdClass::__set_state(array('a' => 1,))

1 hữu ích 0 phản hồi chia sẻ

answer

0

Chuyển mảng thành object php

tôi đã làm nó với cách khá đơn giản,

$list_years = array(); $object = new stdClass(); $object->year_id = 1 ; $object->year_name = 2001 ; $list_years[] = $object;

0 hữu ích 0 phản hồi chia sẻ

answer

0

Chuyển mảng thành object php

function object_to_array($data) is_object($data)) $result = array(); foreach ($data as $key => $value) $result[$key] = object_to_array($value); return $result; return $data; function array_to_object($data)

0 hữu ích 0 phản hồi chia sẻ

answer

0

Chuyển mảng thành object php

Bằng cách sử dụng (mảng) và (đối tượng) làm tiền tố, bạn chỉ việc quy đổi mảng đối tượng thành mảng tiêu chuẩn và ngược lại

'1','b'=>'2','c'=>'3','d'=>'4'); //defining an object array $obj = new stdClass(); $obj->a = '1'; $obj->b = '2'; $obj->c = '3'; $obj->d = '4'; print_r($a);echo '
'; print_r($obj);echo '
'; //converting object array to array $b = (array) $obj; print_r($b);echo '
'; //converting array to object $c = (object) $a; print_r($c);echo '
'; ?>

0 hữu ích 0 phản hồi chia sẻ

answer

0

Chuyển mảng thành object php

Tôi sử dụng cách sau đây để phân tích những mảng Yaml link thành một trạng thái đối tượng.

Điều này kiểm tra tất cả những mảng được đáp ứng nếu có những đối tượng ẩn ở đó và cũng biến chúng trong những đối tượng.

/** * Makes a config object from an array, making the first level keys properties a new object. * Property values are converted to camelCase and are not set if one already exists. * @param array $configArray Config array. * @param boolean $strict To return an empty object if $configArray is not an array * @return stdObject The config object */ public function makeConfigFromArray($configArray = [],$strict = true) $object = new stdClass(); if (!is_array($configArray)) if(!$strict && !is_null($configArray)) return $configArray; return $object; foreach ($configArray as $name => $value) $_name = camel_case($name); if(is_array($value)) $makeobject = true; foreach($value as $key => $val) if(is_numeric(substr($key,0,1))) $makeobject = false; if(is_array($val)) $value[$key] = $this->makeConfigFromArray($val,false); if($makeobject) $object->$name = $object->$_name = $this->makeConfigFromArray($value,false); else $object->$name = $object->$_name = $value; else $object->$name = $object->$_name = $value; return $object;

Điều này biến một yaml được thông số kỹ thuật là

fields: abc: type: formfield something: - a - b - c - d: foo: bar

đến một mảng gồm có:

array:1 [ "fields" => array:1 [ "abc" => array:2 [ "type" => "formfield" "something" => array:4 [ 0 => "a" 1 => "b" 2 => "c" 3 => array:1 [ "d" => array:1 [ "foo" => "bar" ] ] ] ] ] ]

đến một đối tượng của:

#325 +"fields": #326 +"abc": #324 +"type": "formfield" +"something": array:4 [ 0 => "a" 1 => "b" 2 => "c" 3 => #328 +"d": #327 +"foo": "bar" ]

0 hữu ích 0 phản hồi chia sẻ

Tải thêm tài liệu liên quan đến nội dung bài viết Chuyển mảng thành object php programming php

Clip Chuyển mảng thành object php ?

Bạn vừa đọc Post Với Một số hướng dẫn một cách rõ ràng hơn về Review Chuyển mảng thành object php tiên tiến nhất

Share Link Down Chuyển mảng thành object php miễn phí

Heros đang tìm một số trong những ShareLink Tải Chuyển mảng thành object php Free.

Giải đáp thắc mắc về Chuyển mảng thành object php

Nếu sau khi đọc nội dung bài viết Chuyển mảng thành object php vẫn chưa hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Ad lý giải và hướng dẫn lại nha #Chuyển #mảng #thành #object #php - Chuyển mảng thành object php - 2022-09-30 05:54:21
Related posts:

Post a Comment

Previous Post Next Post

Discuss

×Close