ホームページ > バックエンド開発 > PHPの問題 > PHP配列をJSONオブジェクト配列に変換する方法

PHP配列をJSONオブジェクト配列に変換する方法

PHPz
リリース: 2023-04-19 09:53:23
オリジナル
514 人が閲覧しました

配列を JSON オブジェクト配列または PHP のオブジェクト配列に変換することは、多くの場合完了する必要があるタスクです。この記事では、サンプル コードを使用してこの機能を実装する方法を説明します。

PHP 配列を JSON オブジェクト配列に変換する

まず、複数の連想配列を含む PHP 配列を定義する必要があります。例は次のとおりです。

$data = array(
    array(
        'name' => 'John',
        'age' => 30
    ),
    array(
        'name' => 'Mary',
        'age' => 25
    ),
    array(
        'name' => 'Peter',
        'age' => 35
    )
);
ログイン後にコピー

次に、PHP 組み込み関数 json_encode() を使用して、この PHP 配列を JSON オブジェクト配列に変換します。例は次のとおりです。

$json_data = json_encode($data);
ログイン後にコピー
ログイン後にコピー

上記のコードでは、PHP 配列 $data を JSON オブジェクト配列 $json_data に変換します。変換結果は次のとおりです。

[
    {"name":"John","age":30},
    {"name":"Mary","age":25},
    {"name":"Peter","age":35}
]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

PHP 配列を、JSON オブジェクト配列内のメソッドを含むオブジェクト配列に変換します

場合によっては、PHP 配列を JSON オブジェクトに変換する必要があります。配列。各 An オブジェクトにはプロパティに加えてメソッドが含まれます。この機能を実現するには、PHP で匿名クラスを使用します。例は次のとおりです。

$data = array(
    new class('John', 30) {
        public $name;
        public $age;

        public function __construct($name, $age) {
            $this->name = $name;
            $this->age = $age;
        }

        public function sayHello() {
            echo 'Hello, my name is ' . $this->name;
        }
    },
    new class('Mary', 25) {
        public $name;
        public $age;

        public function __construct($name, $age) {
            $this->name = $name;
            $this->age = $age;
        }

        public function sayHello() {
            echo 'Hello, my name is ' . $this->name;
        }
    },
    new class('Peter', 35) {
        public $name;
        public $age;

        public function __construct($name, $age) {
            $this->name = $name;
            $this->age = $age;
        }

        public function sayHello() {
            echo 'Hello, my name is ' . $this->name;
        }
    }
);
ログイン後にコピー

上記のコードでは、各要素が匿名クラスのインスタンスである PHP 配列 $data を定義します。匿名クラスには、$name プロパティと $age プロパティ、およびsayHello() メソッドが含まれています。次に、json_encode() 関数を使用して、PHP 配列 $data を JSON オブジェクト配列に変換できます。

$json_data = json_encode($data);
ログイン後にコピー
ログイン後にコピー

変換結果は次のとおりです:

[
    {"name":"John","age":30},
    {"name":"Mary","age":25},
    {"name":"Peter","age":35}
]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

sayHello() メソッドは、PHP オブジェクトを JSON オブジェクトに変換するときに属性のみが含まれるため、上記の結果には含まれません。メソッドではありません。

PHP 配列を JSON オブジェクト配列内のメソッドを含むオブジェクトの配列に変換する

場合によっては、PHP 配列を JSON オブジェクトの配列に変換する必要があります。属性にはメソッドも含まれます。この機能を実現するには、クラスの継承を使用できます。例は次のとおりです。

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function sayHello() {
        echo 'Hello, my name is ' . $this->name;
    }
}

class John extends Person {
    public function sayHello() {
        echo 'Hello, my name is ' . $this->name . ' and I am John';
    }
}

class Mary extends Person {
    public function sayHello() {
        echo 'Hello, my name is ' . $this->name . ' and I am Mary';
    }
}

class Peter extends Person {
    public function sayHello() {
        echo 'Hello, my name is ' . $this->name . ' and I am Peter';
    }
}

$data = array(
    new John('John', 30),
    new Mary('Mary', 25),
    new Peter('Peter', 35)
);

$json_data = json_encode($data);
ログイン後にコピー

上記のコードでは、クラス person とその 3 つのサブクラス John、Mary、Peter を定義します。これら 3 つのサブクラスはすべて Person クラスから継承し、sayHello() メソッドをオーバーライドします。次に、John、Mary、Peter のインスタンスを含む PHP 配列 $data を定義します。最後に、json_encode() 関数を呼び出して、PHP 配列 $data を JSON オブジェクトの配列に変換します。

変換結果は次のとおりです。

[
    {"name":"John","age":30},
    {"name":"Mary","age":25},
    {"name":"Peter","age":35}
]
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

前の例と同様、上記の結果にはsayHello()メソッドが含まれていません。 JSON オブジェクト配列にメソッドを含める必要がある場合は、これらのメソッドを属性として変換する必要があります。

概要

この記事では、PHP で配列を JSON オブジェクト配列またはオブジェクト配列に変換する方法について説明し、次のような特殊なケースの例をいくつか示します。メソッド、変換方法。これらの例があなたの仕事や勉強に役立つことを願っています。

以上がPHP配列をJSONオブジェクト配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート