ホームページ  >  記事  >  バックエンド開発  >  トーチライトには何層ありますか? PHP の単純なオブジェクトと配列の変換関数コード PHP の多層配列とオブジェクトの変換

トーチライトには何層ありますか? PHP の単純なオブジェクトと配列の変換関数コード PHP の多層配列とオブジェクトの変換

WBOY
WBOYオリジナル
2016-07-29 08:45:121011ブラウズ

コードをコピー コードは次のとおりです。


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 (オブジェクト)$e;
}
関数 objectToArray($e){
$e=(array)$e;
if( gettype($v) ==' リソース' ) return;
if( gettype($v)=='object' || gettype($v)=='array' )
$e[$k]=(array)objectToArray($v) ;
}
return $e;


上記の内容は cnblogs jaiho

php の多層配列とオブジェクトの変換からのものです
多層配列とオブジェクトの変換の目的は非常に簡単で、複数の処理に便利ですWebService 変換における -layer 配列とオブジェクト
単純な (配列) と (オブジェクト) は単一レベルのデータのみを処理でき、マルチレベルの配列とオブジェクトを変換することはできません。
オブジェクトは json_decode(json_encode($object) によって一度に配列に変換できますが、オブジェクト内で gbk 中国語はもちろんのこと、utf-8 でエンコードされていない非 ASCII 文字に遭遇すると問題が発生します。 json_encode と decode のパフォーマンスにも価値があります
以下のコード:


コードをコピーします コードは次のとおりです:

function objectToArray($d) {
if (is_object) ($d)) {
// 指定されたオブジェクトのプロパティを取得します
// get_object_vars 関数を使用します
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return配列をオブジェクトに変換します
* __FUNCTION__ (マジック定数) を使用します
* 再帰呼び出し用
*/
return array_map(__FUNCTION__, $d);
}
else {
// return 配列
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 = "テスト"; ;fooz = new stdClass;
$init->bar ->fooz->baz = "再度テストします";
$init->foox = "ただテストします"
// 配列をオブジェクトに変換します。配列に戻る
$array = objectToArray($init);
$object = arrayToObject($array);
print_r($init);
print_r($array);
エコー "n";


;
上記は、Torch Light にある PHP の単純なオブジェクトと配列の層数の変換関数コードと、Torch Light にある層の数を含む PHP 多層の配列とオブジェクトの変換を紹介しました。 PHP チュートリアルに興味がある人は、それを行うことができます。


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