PHPとJavaScriptの連携に不可欠な、それぞれに配列を渡す方法です。

PHPからJavaScript

PHPからJavaScriptへ配列を渡すには、JSONデータに変換する必要があり、json_encode関数を使用する。

json_encode()

<?php
$array = ['data01','data02','data03','data04','data05']; //配列
$json = json_encode($array); //JSONに変換
?>
<script>
  console.log(<?php echo $json; ?>);
</script>

実行結果|JavaScript

(5) ['data01', 'data02', 'data03', 'data04', 'data05']
0: "data01"
1: "data02"
2: "data03"
3: "data04"
4: "data05"
length: 5
[[Prototype]]: Array(0)

JavaScriptからPHP

反対に、JavaScript(JSONデータ)からPHPへ配列を渡すには、json_decode関数を使用して、JSONデータを配列に変換する。

json_decode()

<?php
$json = '["data01","data02","data03","data04","data05"]'; //JSONデータ
$array = json_decode($json); //配列に変換

var_dump($array);
?>

実行結果|PHP

array(5) {
  [0]=>
  string(6) "data01"
  [1]=>
  string(6) "data02"
  [2]=>
  string(6) "data03"
  [3]=>
  string(6) "data04"
  [4]=>
  string(6) "data05"
}

それぞれのオプション

json_decode関数json_decode関数には、どちらも引数でオプションを指定する。

オプションは「 | 」で複数指定可能。
記載の無い、その他のオプションは 公式 ( PHP: Hypertext Preprocessor )PHP: 定義済み定数 – Manualよりご確認ください。

json_encode関数のよく使用するオプション

  • オプション
  • 説明
  • JSON_PRETTY_PRINT
  • 返される結果の書式を、スペースを使って整える
  • JSON_UNESCAPED_SLASHES
  • 「 / 」 をエスケープしない
  • JSON_UNESCAPED_UNICODE
  • マルチバイト Unicode 文字をそのままの形式で扱う (デフォルトでは \uXXXX にエスケープする)
$array = json_encode($array ,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);

json_decode関数のよく使用するオプション

  • オプション
  • 説明
  • JSON_OBJECT_AS_ARRAY
  • JSON オブジェクトを PHP の配列としてデコードする
    ※第二引数を true に設定して呼び出すことで、自動的に設定できる
$json = json_decode($json ,JSON_OBJECT_AS_ARRAY);
$json = json_decode($json ,true);

連想配列にしたい場合必須の設定です。以下、引用。

true の場合、返されるオブジェクトは連想配列形式になります。 false の場合、返されるオブジェクトは object になります。 null の場合、返されるオブジェクトは flags に JSON_OBJECT_AS_ARRAY が設定されているかどうかによって、 連想配列形式か object かが変化します。

PHP: json_encode – Manual

参考

PHP: json_encode – Manual

PHP: 定義済み定数 – Manual