ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクトと配列間の変換

PHP オブジェクトと配列間の変換

巴扎黑
巴扎黑オリジナル
2016-11-23 13:35:10857ブラウズ

/**

* PHP オブジェクトと配列間の変換

*

* @authorFlyer0126

* @since 2012/05/03

**/


// 1. (array) と (object) を使用して単純に処理します

$objTemp = (object)array();

$objTemp->a = 1;

$objTemp->b = 2;

$objTemp->c = 3;

$arrTemp = (array)$objTemp;

print_r($objTemp);

print_r($arrTemp) ;


 /**

stdClass オブジェクト

(

[a] => 1

[b] => 2

[c] => 3

)

Array

(

[a] => ; 1

[b] => 2

[c] => 3

)

**/


// PS: 単純な (配列) と (オブジェクト) は、多層配列とオブジェクトの変換のために単一層データのみを処理できます。あなたにできることは何もありません。


// 2. 多次元配列とオブジェクト間の変換処理


/**

* オブジェクトを多次元配列に変換します

*

**/

function objectToArray($d) {

if (is_object($d)) {

// 指定されたオブジェクトのプロパティを取得します

// get_object_vars 関数を使用して

$d = get_object_vars($d);

}


if (is_array($d)) {

/ *

* オブジェクトに変換された配列を返す

* __FUNCTION__ (マジック定数) を使用

* 再帰呼び出しの場合

*/

return array_map(__FUNCTION__, $d);

}

else {

//配列を返す

return $d;

}

}

/**

* 多次元配列をオブジェクトに変換します

*

**/

function arrayToObject($d) {

if (is_array($d)) {

/*

* オブジェクトに変換された配列を返す

* __FUNCTION__ (マジック定数) を使用

* 再帰呼び出しの場合

*/

return (object) array_map(__FUNCTION__, $d);

}

else {

// オブジェクトを返す

return $d;

}

}


// 使用法:

$init = new stdClass;

$init->foo = "テストデータ";

$ init ->bar = 新しい stdClass;

$init->bar->baaz = "テスト";

$init->bar->fooz = 新しい stdClass;

$init->bar - >fooz->baz = "再度テスト";

$init->foox = "テストだけ";


// 配列をオブジェクトに変換し、その後オブジェクトを配列に戻します

$array = objectToArray ($init);

$object = arrayToObject($array);


// オブジェクトと配列を出力します

print_r($init);

print_r($array);

print_r($object ) ;


 /**

stdClassオブジェクト

(

[foo] => テストデータ

[bar] => stdClassオブジェクト

(

[baaz] => テスト

[fooz] => stdClass オブジェクト

(

[baz] => 再テスト

)

)

[foox] =>テストするだけ

)

Array

(

[foo] => テストデータ

[ bar] => 配列

(

[baaz] => テスト

[fooz] => 配列

(

[baz] => 再度テスト中

)

)

[foox ] => テストするだけ

)

stdClassオブジェクト

(

[foo] => テストデータ

[bar] => stdClassオブジェクト

(

[ baaz] =>テスト

[fooz] => stdClass オブジェクト

(

[baz] => 再テスト

)

)

[foox] => 試してみてください

)

**/


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPの改行問題次の記事:PHPの改行問題