ホームページ > バックエンド開発 > PHPの問題 > js配列をphp配列に変換する方法

js配列をphp配列に変換する方法

PHPz
リリース: 2023-03-22 11:46:01
オリジナル
1629 人が閲覧しました

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(&#39;php://input&#39;), 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[&#39;json_input&#39;];
// 将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[&#39;jsArr&#39;];
// 进行相应的处理
// ......
// 将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[&#39;eval&#39;]);
// 将JS数组转为PHP数组
$phpArr = array();
foreach ($jsArr as $value) {
    $phpArr[] = $value;
}
// 返回结果
echo json_encode($phpArr);
?>
ログイン後にコピー

このメソッドは非常に小さなコードを記述しますが、Eval 関数を使用してJSコード この方法には一定の危険性があり、eval関数に入力する文字列を管理しないとセキュリティリスクが発生する可能性があります。

概要

さまざまなニーズと開発環境に応じて、JS 配列を PHP 配列に変換する 4 つの方法を上記で紹介しました。各方法には、以下に示すように、独自の長所と短所があります。

  • AJAX リクエストを使用します。実行効率は比較的低く、サーバーの負荷は高く、合計データ サイズが大きくなりすぎないようにする必要があります。大きい。
  • 送信に隠しフォームを使用する: 実装は比較的単純ですが、サーバーへの負担が大きくなる可能性があるため、合計データ サイズが大きすぎてはなりません。
  • AJAX リクエストには jQuery ライブラリを使用します。実装はシンプルで便利ですが、パフォーマンスは比較的低くなります。
  • 変換には PHP の eval 関数を使用します。記述されるコードは少なくなりますが、eval 関数を使用すると、セキュリティの問題を防ぐために入力データを厳密に検証する必要があります。

したがって、実際の開発では、ニーズに応じて適切な方法を選択する必要があります。

以上がjs配列をphp配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート