スタートページJavascriptReact
PHPの概要文法の基本(1)文法の基本(2) ←文法の基本(3)いくつかの例

PHP文法の基本(3)いくつかの例


PHPで作成した値をJS(javaScript)に渡す

フォームなどで 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>

連想配列(Object)変数の受渡し

通常の配列と同様に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>

2次元配列の取扱

クライアント-サーバ環境での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($新配列, $新行);
    }
  }
?>