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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

解決済

PHPでjson形式のファイルをCSVにしたいんですがarrayと表示される部分があります

greentail
greentail

総合スコア14

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

2回答

0評価

0クリップ

250閲覧

投稿2022/04/27 02:18

編集2022/04/27 12:18

下記のようなコードでjson形式のファイルをCSVにしたいんですがtest.csvをエクセルで開くとrangeの部分がarrayと表示されてしまいます。

25,山田,1984-07-23,O,サッカー,千葉,array

foreachの中に、
if($key == "range"){
$recordValue = $data["result"]["emplo"]["range"];
}
のように記述して試しているのですが行き詰ってしまいました。

25,山田,1984-07-23,O,サッカー,千葉,2002-04-01,2019-07-02

のように出力したいと思っています。
ご教示お願いします。

json.json

{ "result": { "emplo": [ { "id": "25", "name": "山田", "birthday": "1984-07-23", "blood": "O", "hobby": "サッカー", "pref": "千葉", "range": { "from": "2002-04-01", "to": "2019-07-02" } }, { "id": "30", "name": "田中", "birthday": "1990-10-21", "blood": "A", "hobby": "DIY", "pref": "栃木", "range": { "from": "2011-05-01", "to": "2019-07-30" } } ] } }

php

<?php $str = file_get_contents("json.json"); $data = json_decode($str, true); $filew = fopen('C:\xxxx\xxxxx\test.csv', 'w'); foreach ($data["result"]["emplo"] as $key => $recordValue) { $recordValue = mb_convert_encoding($recordValue, "SJIS", "UTF-8"); fputcsv($filew, $recordValue); } // ファイルを閉じる fclose($filew);

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2022/04/27 02:27

>if($key == "range"){ 処理  } 「処理」を具体的に記載してください。
greentail

2022/04/27 02:31

すみません、修正しました
SurferOnWww

2022/04/27 02:32

> test.csvをエクセルで開くとrangeの部分がarrayと表示されてしまいます その「rangeの部分がarrayと表示」される CSV はどのようになっているのですか?
greentail

2022/04/27 02:36

答えになっているかわかりませんが、test.csvをエクセルで開いたときに該当のセルがArrayと表示されていて、エディタで開いてもArrayになっています。
SurferOnWww

2022/04/27 02:42

> エディタで開いてもArrayになっています。 そのエディタというのは何だかわかりませんが、メモ帳ですか? であれば、メモ帳に表示された結果を 2 ~ 3 行コピペしていただけると、その Array というのが何だか分かると思うのですが・・・
greentail

2022/04/27 02:58

メモ帳で開くと 25,山田,1984-07-23,O,サッカー,千葉,Array 30,田中,1990-10-21,A,DIY,栃木,Array となっています。
m.ts10806

2022/04/27 03:05

文字列として書き込まれた(もしくは出力された)ArrayはArrayという文字列にしかならないので、そこを追究してもあまり意味なさそうに思います。 要は配列を正しく展開できてないだけなので。
greentail

2022/04/27 03:11

ありがとうございます。 tabuu様がご教示下さいました一時的に移し替えるやり方で実現することが出来ました。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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