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

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

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

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

Q&A

解決済

1回答

992閲覧

PHP csvファイルを読み取り以下のように連想配列にしたい。

ITOMO5963

総合スコア98

PHP

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

0グッド

0クリップ

投稿2022/07/01 02:30

やりたいこと

以下のcsvファイルを読み取り以下のように連想配列(理想)にしたい。
1列目のキーで2列目を値です。
できたら、処理速度が速い「SplFileObject」でできたらと思い、やってみましたが、うまく動作しません。
お力沿いお願いします。

バージョン

[OS] CenoOS7.7
[バージョン] PHP 7.2.24

PHP

1$file = new SplFileObject("./id.csv"); 2 $file->setFlags(SplFileObject::READ_CSV); 3 4 foreach ($file as $row){ 5 $line = explode(',',$row); 6 $array = array($line[0]=>$line[1]); 7 } 8 var_dump($array); 9 10 11# 結果 12array(1) { [""]=> NULL } 13 14 15 16# 連想配列(理想) 17array( 18 ['りんご'] => 9999 19 ['なし' ] => 45654 20 ['すいか ]' => 45654 21 ['メロン '] => 9999 22 ['パイナップル'] => 45654' 23)

id.csv

1りんご,9999 2なし,45654 3すいか,45654 4メロン,9999 5パイナップル,45654

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

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

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

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

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

guest

回答1

0

ベストアンサー

php

1<?php 2 3$file = new SplFileObject("./id.csv"); 4$file->setFlags(SplFileObject::READ_CSV); 5 6$response = []; 7foreach ($file as $row) { 8 $response[$row[0]] = $row[1]; 9} 10var_dump($response); 11

投稿2022/07/01 03:48

編集2022/07/01 04:42
phper.k

総合スコア3923

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

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

ITOMO5963

2022/07/01 04:38

結果が以下のようになりました。 array(6) { [0]=> array(1) { ["りんご"]=> string(4) "9999" } [1]=> array(1) { ["なし"]=> string(5) "45654" } [2]=> array(1) { ["すいか"]=> string(5) "45654" } [3]=> array(1) { ["メロン"]=> string(4) "9999" } [4]=> array(1) { ["パイナップル"]=> string(5) "45654" } [5]=> array(1) { [""]=> NULL } } 以下のようには、できないでしょうか? array(6) { ["りんご"]=> string(4) "9999" } { ["なし"]=> string(5) "45654" } { ["すいか"]=> string(5) "45654" } { ["メロン"]=> string(4) "9999" } { ["パイナップル"]=> string(5) "45654" } { [""]=> NULL } 最終的には、以下のように値だけ取りたいためです。 var_dump($response["りんご"]); 以下でも取得できますが、[1]の箇所をワイルドカードで対応できなそうなためです。 var_dump($response[1]["りんご"]);
phper.k

2022/07/01 04:43

回答修正済
ITOMO5963

2022/07/01 06:16

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問