Web 開発では、JavaScript (JS) と PHP が最も一般的に使用される 2 つのプログラミング言語であるため、開発プロセスでは配列が避けられません。この状況に対応して、多くの場合、JS 配列を PHP 配列に変換する必要があります。この機能を実現するにはさまざまな方法がありますが、以下で 1 つずつ紹介します。
方法 1: AJAX リクエストを使用する
フロントエンドとバックエンドの分離開発モードでは、通常、フロントエンドとバックエンド アプリケーションは AJAX リクエストを使用して、通信する。したがって、AJAX リクエストを使用して JS 配列をバックグラウンドに送信し、受信後、バックグラウンドでそれを処理し、JS 配列を PHP 配列に変換できます。
JS コードは次のとおりです:
// 定义JS数组 var jsArr = ['apple', 'banana', 'orange']; // 新建AJAX请求 var xhr = new XMLHttpRequest(); // 设置请求的方式、发送目标页面和是否异步请求 xhr.open('POST', '处理JS数组的PHP页面地址', true); // 设置请求头 xhr.setRequestHeader('Content-Type', 'application/json'); // 发送请求 xhr.send(JSON.stringify(jsArr)); // 监听请求 xhr.onreadystatechange = function(){ // 当请求处理完成后进行操作 if (xhr.readyState == 4 && xhr.status == 200) { // 获取后台返回的结果 var phpArr = JSON.parse(xhr.responseText); console.log(phpArr); } }
PHP コードは次のとおりです:
<?php // 获取JS数组 $jsArr = json_decode(file_get_contents('php://input'), true); // 进行相应的处理 // ...... // 将JS数组转为PHP数组 $phpArr = array(); foreach ($jsArr as $value) { $phpArr[] = $value; } // 返回结果 echo json_encode($phpArr); ?>
このメソッドは実装が比較的簡単ですが、データ量が大きい場合は、要求されると、サーバーに過剰な負荷がかかり、応答時間が遅くなる可能性があります。
方法 2: 隠しフォームを使用して渡す
もう 1 つの方法は、HTML フォームを使用して JS 配列を渡すことです。具体的な方法としては、JS配列をJSON形式に変換し、隠しHTML形式で転送し、バックグラウンドでJSONデータを受信した後、JSONをPHP配列に変換します。
JS コードは次のとおりです。
// 定义JS数组 var jsArr = ['apple', 'banana', 'orange']; // 获取存储JS数组的隐藏表单元素对象 var jsonInput = document.getElementById('json_input'); // 转为JSON格式 var jsonString = JSON.stringify(jsArr); // 将JSON字符串存储到隐藏表单中 jsonInput.value = jsonString; // 提交表单 document.getElementById('submit_form').submit();
PHP コードは次のとおりです。
<?php // 获取隐藏表单传递过来的JSON字符串 $jsArrJson = $_POST['json_input']; // 将JSON字符串转为PHP数组 $phpArr = json_decode($jsArrJson, true); // 进行相应的处理 // ...... ?>
この方法は簡単に使用できますが、データ量が多い場合は、サーバーに問題が発生する可能性があります。
方法 3: jQuery ライブラリを使用して AJAX リクエストを行う
プロジェクトで jQuery ライブラリを使用する場合は、jQuery ライブラリを使用して JS 配列をPHP 配列は非常に単純です。
JS コードは次のとおりです:
// 定义JS数组 var jsArr = ['apple', 'banana', 'orange']; // 新建AJAX请求 $.ajax({ type: "POST", url: "处理JS数组的PHP页面地址", data: { jsArr: jsArr }, success: function(phpArr) { console.log(phpArr); } });
PHP コードは次のとおりです:
<?php // 获取JS数组 $jsArr = $_POST['jsArr']; // 进行相应的处理 // ...... // 将JS数组转为PHP数组 $phpArr = array(); foreach ($jsArr as $value) { $phpArr[] = $value; } // 返回结果 echo json_encode($phpArr); ?>
このメソッドはシンプルで使いやすく、より多くの AJAX もサポートできます。 jQuery ライブラリ関数の使用 (formData を使用したファイルのアップロードなど)。ただし、jQuery ライブラリの使用はパフォーマンスに影響を与える可能性があり、比較的遅くなることに注意してください。
方法 4: PHP の eval 関数を使用して変換する
PHP には、文字列を PHP コードとして実行できる Eval 関数があります。したがって、この関数を使用すると、$js 配列の内容を元の PHP コードとして実行し、JS 配列を PHP 配列に変換できます。
JS コードは次のとおりです:
// 定义JS数组 var jsArr = ['apple', 'banana', 'orange']; // 将JS数组转为JSON字符串 var jsonString = JSON.stringify(jsArr); // 拼接执行JS代码的字符串 var evalString = "return " + jsonString + ";"; // 在PHP页面中执行JS代码 $.ajax({ url: "处理JS数组的PHP页面地址?eval=" + encodeURIComponent(evalString), success: function(phpArr) { console.log(phpArr); } });
PHP コードは次のとおりです:
<?php // 获取JS数组 $jsArr = eval($_REQUEST['eval']); // 将JS数组转为PHP数组 $phpArr = array(); foreach ($jsArr as $value) { $phpArr[] = $value; } // 返回结果 echo json_encode($phpArr); ?>
このメソッドは非常に小さなコードを記述しますが、Eval 関数を使用してJSコード この方法には一定の危険性があり、eval関数に入力する文字列を管理しないとセキュリティリスクが発生する可能性があります。
概要
さまざまなニーズと開発環境に応じて、JS 配列を PHP 配列に変換する 4 つの方法を上記で紹介しました。各方法には、以下に示すように、独自の長所と短所があります。
したがって、実際の開発では、ニーズに応じて適切な方法を選択する必要があります。
以上がjs配列をphp配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。