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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel 4

Laravel 4 とはTaylor Otwellによって開発された、オープンソースなPHPwebアプリケーション開発フレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

Q&A

2回答

1763閲覧

phpで配列の操作

samazama4623

総合スコア59

Laravel 4

Laravel 4 とはTaylor Otwellによって開発された、オープンソースなPHPwebアプリケーション開発フレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

0グッド

0クリップ

投稿2015/07/10 06:37

lang

1 2string(98) "upload_id,zip_password 39999999,pass99912345 4aaa9999,passaaa12345 5bbb9999,passbbb12345 6" 7array(4) { 8 [0]=> 9 string(30) "upload_id,zip_password" 10 [1]=> 11 string(20) "9999999,pass99912345" 12 [2]=> 13 string(20) "aaa9999,passaaa12345" 14 [3]=> 15 string(20) "bbb9999,passbbb12345" 16}

たとえば上記の配列があるとしたら
csvファイルを読み込んだ文字列が上記文字列の場合、
array(2) {
[upload_id]=>[0]=>9999999
[1]=>aaa9999
[2]=>bbb9999
[zip_password]=>
[0]=>pass99912345
[1]=>passaaa12345
[2]=>passbbb12345

}
のような配列にしたい場合どのようにかけばよいでしょうか

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

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

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

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

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

guest

回答2

0

lang

1<?php 2$arr = array( 3 "upload_id,zip_password", 4 "9999999,pass99912345", 5 "aaa9999,passaaa12345", 6 "bbb9999,passbbb12345", 7); 8 9$arr = array_map(function ($a) { return explode(',', $a); }, $arr); 10$keys = array_shift($arr); 11$result = array_combine($keys, [array_column($arr, 0), array_column($arr, 1)]); 12var_dump($result); 13/* 14array(2) { 15 'upload_id' => 16 array(3) { 17 [0] => 18 string(7) "9999999" 19 [1] => 20 string(7) "aaa9999" 21 [2] => 22 string(7) "bbb9999" 23 } 24 'zip_password' => 25 array(3) { 26 [0] => 27 string(12) "pass99912345" 28 [1] => 29 string(12) "passaaa12345" 30 [2] => 31 string(12) "passbbb12345" 32 } 33} 34*/

※ PHP 5.5.0 以上が必要


あえて array 系関数を使わないイバラの道を往くなら・・・

lang

1<?php 2$arr = array( 3 "upload_id,zip_password", 4 "9999999,pass99912345", 5 "aaa9999,passaaa12345", 6 "bbb9999,passbbb12345", 7); 8 9$keys = null; 10$result = array(); 11 12foreach ($arr as $a) { 13 $a = explode(',', $a); 14 if ($keys === null) { 15 $keys = $a; 16 $result = array(); 17 foreach ($a as $k) { 18 $result[$k] = array(); 19 } 20 } 21 else { 22 foreach ($a as $i => $v) { 23 $result[$keys[$i]][] = $v; 24 } 25 } 26} 27 28var_dump($result); 29/* 30array(2) { 31 'upload_id' => 32 array(3) { 33 [0] => 34 string(7) "9999999" 35 [1] => 36 string(7) "aaa9999" 37 [2] => 38 string(7) "bbb9999" 39 } 40 'zip_password' => 41 array(3) { 42 [0] => 43 string(12) "pass99912345" 44 [1] => 45 string(12) "passaaa12345" 46 [2] => 47 string(12) "passbbb12345" 48 } 49} 50*/

投稿2015/07/10 06:51

編集2015/07/10 06:58
ngyuki

総合スコア4514

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

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

0

ロジック処理でやるパターンを記載します。

lang

1// CSVデータ(サンプル) 2$csv_data = array("upload_id,zip_password","9999999,pass99912345","aaa9999,passaaa12345","bbb9999,passbbb12345"); 3 4for($key=0 ; $key < sizeof($csv_data) ; $key++) 5{ 6 // 分割 7 $buff = preg_split("/,/", $csv_data[$key]); 8 9 if ($key == 0) // 見出し出力 ? 10 { 11 // 出力バッファセット 12 $out_buff = array($buff[0]=>array(), $buff[1]=>array()); 13 14 continue; 15 } 16 17 // 出力バッファにセット 18 $out_buff["upload_id"][($key-1)] = $buff[0]; 19 20 if (isset($buff[1]) == true) // 分割データあり? 21 { 22 // データミスで","が無い場合にエラーになるのを回避 23 $out_buff["zip_password"][($key-1)] = $buff[1]; 24 } 25} 26var_dump($out_buff); 27 28 29array(2) { 30 ["upload_id"]=> 31 array(3) { 32 [0]=> 33 string(7) "9999999" 34 [1]=> 35 string(7) "aaa9999" 36 [2]=> 37 string(7) "bbb9999" 38 } 39 ["zip_password"]=> 40 array(3) { 41 [0]=> 42 string(12) "pass99912345" 43 [1]=> 44 string(12) "passaaa12345" 45 [2]=> 46 string(12) "passbbb12345" 47 } 48} 49 50

投稿2015/07/10 07:03

KenjiObata

総合スコア440

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問