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

PHPでJSON配列を文字列に変換する方法

PHPz
PHPzオリジナル
2023-04-20 13:49:21792ブラウズ

PHP プログラミングでは、JSON 形式のデータがよく使用され、JSON 配列を文字列に変換することが一般的な問題になります。以下では、PHP で JSON 配列を文字列に変換する方法を紹介します。

PHP には、PHP 配列を JSON 形式の文字列に変換できる非常に便利な関数 json_encode() が用意されています。ただし、PHP 配列に多次元配列が含まれている場合、json_encode() 関数では満足できません。したがって、自作の関数を使用する必要があります。

次は、JSON 配列を文字列に変換する関数です:

function json_arr2string($arr, $indent=0){
  $str = "";
  $indstr = "";
  for ($i=0; $i<$indent; $i++){
    $indstr .= "    ";
  }
  foreach ($arr as $key => $val){
    if (is_array($val)){
      $str .= $indstr . '"' . $key . '": {' . "\n" . json_arr2string($val, $indent+1) . $indstr . "},\n";
    } else{
      $str .= $indstr . '"' . $key . '": "' . $val . '",' . "\n";
    }
  }
  return "{" . "\n" . substr($str, 0, -2) . "\n" . $indstr . "}";
}

この関数には 2 つのパラメーターがあります。最初のパラメータ $arr は文字列に変換される JSON 配列です。2 番目のパラメータのデフォルト値は 0 で、多次元配列の処理に使用されます。

関数は、まず空の文字列変数 $str とインデントに使用される文字列変数 $indstr を作成し、次に配列内の各要素をチェックします。すべての要素が処理されるまで再帰的に多次元配列を呼び出して、多次元配列を処理します。

最後に、文字列変数 $str の最後の 2 文字を削除し (つまり、最後のコンマとそれに隣接するスペースを削除し)、中括弧と改行を追加して、最後の文字列。

次の例は、上記の関数を使用して、多次元配列を含む JSON 配列を文字列に変換する方法を示しています。

$json_arr = array(
    "name" => "PHP",
    "version" => "7.3.5",
    "extension" => array(
        "json" => "enabled",
        "curl" => "enabled",
        "pdo" => "enabled"
    ),
    "framework" => array(
        "name" => "Laravel",
        "version" => "5.8.18"
    )
);

$json_str = json_arr2string($json_arr);

echo $json_str;

上記のコードは、次の結果を出力します。 ##

{
    "name": "PHP",
    "version": "7.3.5",
    "extension": {
        "json": "enabled",
        "curl": "enabled",
        "pdo": "enabled"
    },
    "framework": {
        "name": "Laravel",
        "version": "5.8.18"
    }
}
これは、元の JSON 配列を文字列に変換する、JSON 形式に準拠した文字列です。

概要: 上記の自作関数

json_arr2string() を使用すると、多次元配列を含む JSON 配列を簡単に文字列に変換できます。 PHP プログラミングで多次元配列を使用したことがない場合は、json_encode() 関数で十分です。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。