多層配列とオブジェクト変換の目的は非常にシンプルで、WebServiceで多層配列とオブジェクト変換を処理するのに便利です
単純な (配列) と (オブジェクト) は単一レベルのデータのみを処理でき、複数レベルの配列とオブジェクトの変換には無力です。
オブジェクトは 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)) {
/ *
* オブジェクトに変換された配列を返します
* __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;
}
}
// Useage:
// 新しい stdClass オブジェクトを作成します
$init = new stdClass;
// テスト データを追加します
$init->foo = "テスト データ";
$init->gt;bar = new stdClass;
$init->bar->baaz = "テスト";
$init- >bar->fooz = new stdClass;
$ init->bar->fooz->baz = "再度テスト";
$init->foox = "テストだけ";
// 変換配列からオブジェクトへ、そしてオブジェクトから配列へ戻ります
$array = objectToArray($init);
$object = arrayToObject($array);
// オブジェクトと配列を出力します
print_r($init);
echo "n";
print_r($array);
echo "n"
print_r($object);
?>
http://www.bkjia.com/PHPjc/328084.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/328084.html技術記事多層配列とオブジェクトの変換の目的は非常に単純です。これは、WebService で多層配列とオブジェクトの変換を処理する場合に便利です。 ...