検索

キーワード


【PHP】オブジェクトと配列の違い、JSON形式の取り扱いについて

  • 公開日:2020-10-06 17:34:07
  • 最終更新日:2021-02-05 18:11:30

オブジェクト

PHPの開発で欠かせない変数や配列。同じく値を管理するものに、オブジェクトというものがあります。

配列に似たもので、PHPで開発する上で必ず耳にするキーワードですが、なかなか違いがわかりづらかったりします。

そこで、オブジェクトと配列の違いについて解説してみます。


オブジェクトと配列の違いについて

まずは配列。例として、名前と年齢を格納した連想配列を定義してみます。

$array = [
  "name" => "田中",
  "age" => 20,
];

構造としては"インデックス名" => "値"という形になっています。

値を出力するには以下のようにします。

echo $array["name"];

これで、田中という名前が出力されます。


次にオブジェクトを定義してみます。

class Man{
  public $name;
  public $age;
 
  function __construct($name, $age){
    $this -> name = $name;
    $this -> age = $age;
  }
}
 
$man1 = new Man("田中", "20");

配列との大きな違いとして、クラスの中にプロパティを設定する必要があります。

クラスの宣言は{ } で行い、変数を宣言します。

オブジェクトはnew演算子でインスタンス化をして値を持たせます。

値を出力するには以下のようにします。

echo $man1 -> name;


オブジェクトにするメリットとしては、開発の規模が大きくなった際にプロパティと一緒に処理も設定できることです。

規模が大きくなるにつれて、管理するデータも増えてきます。しかしオブジェクトであれば、関数はクラスに紐づいているため、対象のクラスから容易にアクセスや修正が行うことができます。

JSON化

PHPでは様々な言語で使用することができるJSON形式に変換することができます。

JSONデータを1つ用意するだけで、JavaScriptを使う人、PHPを使う人、Rubyを使う人など、様々なプログラミング言語でプログラミングする人たちにデータを渡すことができます。

特にPHPでは、JavaScript内で処理するためのデータを作って渡すことが多いので、使い方をしっかり覚えておきましょう。

json_encode

それでは、PHPで連想配列をJSON形式に変換してみましょう。

JSON形式に変換するには、json_encode関数を使います。

json_encode(変換する値[, オプション])
$fruits = [
  "りんご"=>"apple",
  "みかん"=>'orange',
  "メロン"=>'melon',
  "パイナップル"=>'pineapple'
];

//配列をJSON形式に変換
$jsonstr =  json_encode($fruits, JSON_UNESCAPED_UNICODE);
echo $jsonstr;
{"りんご":"apple","みかん":"orange","メロン":"melon","パイナップル":"pineapple"}

第二引数にオプションとしてJSON_UNESCAPED_UNICODEを指定することで、日本語も使用できます。


json_decode

今度は、JSON形式に変換された連想配列を、PHPで使えるようにデコードしてみましょう。

デコードするにはjson_decode関数を使います。

json_decode(デコードする値)

先ほどの例でエンコードした値をデコードしてみます。

$fruits = [
  "りんご"=>"apple",
  "みかん"=>'orange',
  "メロン"=>'melon',
  "パイナップル"=>'pineapple'
];

//配列をJSON形式に変換
$jsonstr =  json_encode($fruits, JSON_UNESCAPED_UNICODE);

//JSON形式を元に戻す
$fruits = json_decode($jsonstr, true);
echo $fruits;
Array
(
    [りんご] => apple
    [みかん] => orange
    [メロン] => melon
    [パイナップル] => pineapple
)


まとめ

オブジェクトとJSON形式のファイルについてまとめてみました。

特にオブジェクトは、開発の規模が大きくなるほど重要な要素になってくるので、難しいとは思いますが少しずつ勉強して使いこなせるようになりましょう!


【著者】

當山

主にPHPでのフレームワーク開発やWebアプリの開発に携わってきました。 得意分野はHTML5とCSSによるフロントエンド開発。

よく読まれている記事