スタートページ>
Javascript>
React
PHPの概要
←文法の基本(1)
←文法の基本(2)
←文法の基本(3)いくつかの例
フォームなどで JS で作成した値を PHP に渡すのは、paiza.io 環境で実現するのは困難なようですので、ここでは省略します。
PHP → JS でも、script 中の情報を表示するのに console.log() を用いるのが簡潔ですが、 paiza.io 環境でその結果を探すのは複雑です。ここでは、私を信用?してもらうことにします。
<?php
$変数PHP = 10;
?>
<script type="text/javascript">
var 変数JS = <?php echo $変数PHP; ?>;
console.log(変数JS);
</script>
単に $変数PHP = [10, 20]; としたのではエラーになります。
次のように json_encode / JSON.parse を用いる必要があります。
10
20
と表示されます。
<?php $配列PHP = [10, 20]; $配列JSON = json_encode($配列PHP); echo $配列JSON; // "[10, 20]" ?> <script type="text/javascript"> var 配列JS = JSON.parse('<?php echo $配列JSON; ?>'); for (var i=0; i<配列JS.length; i++) { console.log(配列JS[i]); } </script>
通常の配列と同様にjson_encode / JSON.parse を用います。
この結果
ミカン: 50
リンゴ: 100
になります。
<?php $配列PHP = ["ミカン" => 50, "リンゴ" => 100]; $配列JSON = json_encode($配列PHP); echo $配列JSON; // '{"ミカン":50,"リンゴ":100}' ?> <script type="text/javascript"> var 配列JS = JSON.parse('<?php echo $配列JSON; ?>'); for (var キー in 配列JS) { console.log(キー + ': ' + 配列JS[キー]); } </script>
クライアント-サーバ環境でのPHPの利用では、サーバにあるデータベースから該当するデータを取り出して加工する処理が多いです。実際には nonSQL などデータベースアクセス技術を用います。
しかし、ここでは paiza.io 環境での1ページ内での処理を前提としているので、データ量の少ない2次元配列を対象にします。
<?php // ===== 配列の定義 $配列 = [ ["阿部", "文学部", 20], ["井上", "工学部", 20], ["宇野", "文学部", 21] ]; ?> <?php // ====== サイズや要素の出力 $行数 = count($配列); // 3 $列数 = count($配列[0]); // 3 $要素 = $配列[0][0]; // "阿部" $行0 = $配列[0]; // ["阿部", "文学部", 20] $行0要素 = $行0[0]; // "阿部" echo "行数=" . $行数 . ", 列数=" . $列数 . ", 要素=" . $要素 .", 行0要素=" . $行0要素; echo "<br>"; $フォーマット = "配列[0][0]=%s, [1]=%s, [2]=%d"; vprintf($フォーマット, $配列[0]); // 「echo $配列[0],」はエラーになります。 ?>
次の出力が得られます。
行数=3, 列数=3, 要素=阿部, 行0要素=阿部
配列[0][0]=阿部, [1]=文学部, [2]=20
$配列[*][1] = "文学部" の行を選択して $新配列 を作成します。
次の出力がえられます。
阿部, 文学部, 20
宇野, 文学部, 21
<?php // ===== (1)配列の定義 $配列 = [ ["阿部", "文学部", 20], ["井上", "工学部", 20], ["宇野", "文学部", 21] ]; ?> <?php // ===== (2)新配列の初期設定 $新配列 = []; ?> <?php // ===== (3)配列を選択して新配列に追加 foreach($配列 as $行) { if ($行[1] == "文学部") { array_push($新配列, $行); // push ではない } } ?> <?php // ===== (4)新配列の確認 (阿部と宇野の行) foreach($新配列 as $行) { vprintf("%s, %s, %d", $行); echo "<br>"; } ?>
$行を編集しれ $新行 を作成すればよい。
<?php // ===== (3)配列を選択して新配列に追加 foreach($配列 as $行) { if ($行[1] == "文学部") { $新行 = []; $新行[0] = $行[0]; // 氏名 $新行[1] = $行[2]; // 年齢 array_push($新配列, $新行); } } ?>