質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1042閲覧

Javascriptで可変変数を使用したい

kazumasa118

総合スコア6

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/03/05 07:12

現在PHPとJavascriptの勉強をしていて、
PHPからJavascriptへデータの受け渡しをしているのですが、
コードを簡易化しようと思い、for文を使用したのですがうまくいきません。
何かいい方法はないでしょうか?
ご教授お願いいたします。

<!--変更前コード↓--> <?php $data1 = [1,2,3,4,5]; $data2 = [6,7,8,9,10]; $data3 = [11,12,13,14,15]; $data4 = [16,17,18,19,20]; for ($i = 1; $i <= 4;$i++){ ${"b".$i} = json_encode(${"data".$i}); } ?> <script> var a1 = <?php echo $b1; ?>; var a2 = <?php echo $b2; ?>; var a3 = <?php echo $b3; ?>; var a4 = <?php echo $b4; ?>; console.log(a1); console.log(a2); console.log(a3); console.log(a4); </script>

<!--変更後コード↓--> <script> for (var i = 1; i <= 4; i++){ eval( "var a" + i + "= <?php echo $b" + i + "; ?>;" ); eval( "var console.log(a" + i + ");"); } </script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

PHP: Webサーバとして起動、Chrome等のブラウザが「HTMLください」とリクエストした段階で動的なHTMLを作って渡す為に実行される
JavaScript: Chrome等のブラウザがHTMLを受け取った後、ページの見栄えを変更する為に実行

なのでフェーズが違います。
とにかくPHPがHTMLを生成するのが先。

ChromeにとってWebサーバの奥がPHPだろうがRubyだろうがJavaだろうが全く関係ありません。
単にHTTPリクエストを飛ばしてHTMLを受け取り、scriptタグを見つけて実行するだけです。


これを前提にいじって見ましょう。
PHPにはHTMLタグっぽく使える面白い魔法があるのでそちらを利用します。

また、<?php echo $value; ?>は長いので、
ショートタグ<?= $value ?>を利用した方が若干読みやすいかなぁと思います。

php

1<?php 2// ここが固定される場合 3$data1 = [1,2,3,4,5]; 4$data2 = [6,7,8,9,10]; 5$data3 = [11,12,13,14,15]; 6$data4 = [16,17,18,19,20]; 7 8$data = [ 9 "a1" => $data1, 10 "a2" => $data2, 11 "a3" => $data3, 12 "a4" => $data4, 13]; 14?> 15 16<script> 17 <?php foreach ($data as $k => $v): ?> 18 var <?= $k ?> = <?= json_encode($v) ?>; 19 <?php endforeach; ?> 20 <?php foreach ($data as $k => $v): ?> 21 console.log(<?= $k ?>); 22 <?php endforeach; ?> 23</script>

投稿2020/03/05 13:25

miyabi-sun

総合スコア21203

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazumasa118

2020/03/09 09:14

ありがとうございます。 わかりやすい回答でとても勉強になりました。
guest

0

Javascriptで可変変数を使用したい

JavaScript で可変変数を実装するには クライアント側で eval() 関数が必須になりますが、こちらの質問・回答 にも通じる可読性の懸念があります。


  1. PHPの <?php?> はサーバー側処理
  2. PHPの <?php?> は応答されるHTML(javascript)側処理

この違いを混乱しやすい初学のうちは別の方法をおすすめします。

たとえば、二次元配列を JSON の文字列にして クライアントに渡す方法

PHP

1<?php 2 $data1 = [1,2,3,4,5]; 3 $data2 = [6,7,8,9,10]; 4 $data3 = [11,12,13,14,15]; 5 $data4 = [16,17,18,19,20]; 6 7 $json = json_encode([ $data1, $data2, $data3, $data4 ]); 8?> 9<script> 10// $json(文字列)をJSON.parse()の引数にハードコードする。 11let ary = JSON.parse(<?php echo $json ?>); 12console.log( ary ); // javascriptでは二次元配列を処理 13for(let item of ary) { 14 console.log( item ); 15} 16</script>

投稿2020/03/05 09:54

AkitoshiManabe

総合スコア5434

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazumasa118

2020/03/09 09:18

ありがとうございます。 大変勉強になりました。
guest

0

ベストアンサー

javascritの変数はphp渡せません
こんなかんじで・・・

投稿2020/03/05 07:33

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/03/05 07:33

<?php $data1 = [1,2,3,4,5]; $data2 = [6,7,8,9,10]; $data3 = [11,12,13,14,15]; $data4 = [16,17,18,19,20]; ?> <script> <?PHP for ($i = 1; $i <= 4;$i++){ print "var a{$i} = ".json_encode(${"data".$i}).";\n"; print "console.log(a{$i});\n"; } ?> </script>
kazumasa118

2020/03/10 03:02 編集

やりたいことができました!! 的確なご回答でわかりやすかったです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問