コードをコピー コードは次のとおりです。
function arrayToObject($e){
if( gettype($e)! ='array ' ) return;
foreach($e as $k=>$v){
if( gettype($v)=='array' || getType($v)=='object ' )
$e[$k]=(object)arrayToObject($v);
}
return (object)$e;
関数 objectToArray($e) ){
$e=(array)$e;
foreach($e as $k=>$v){
if( gettype($v)=='resource' )
if ( gettype($v)=='object' || gettype($v)=='array' )
$e[$k]=(array)objectToArray($v);
return $e;
}
上記の内容は cnblogs jaiho からのものです
PHP の多層配列とオブジェクトの変換
多層の変換の目的配列とオブジェクトは非常にシンプルで、WebService で多層配列とオブジェクトの変換を処理するのに便利です。
シンプルな (配列) と (オブジェクト) は単層データのみを処理できますが、多層配列とオブジェクトについては何もできません。オブジェクト変換。
オブジェクトは json_decode(json_encode($object) によって一度に配列に変換できますが、オブジェクト内に gbk 中国語、 json_encode と decode のパフォーマンスについて言及することも重要です。
以下のコード:
コードをコピーします コードは次のとおりです。
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;
}
}
// 使用方法:
// 新しい stdClass オブジェクトを作成します
$init = new stdClass;
// テスト データを追加します
$init->foo = "テスト データ";
$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);