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

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

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

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

Q&A

解決済

3回答

1835閲覧

PHP  配列 意味

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2016/06/29 12:26

###前提・実現したいこと
初歩的な質問ですいません、連想配列を下記のようにつなげる記述が何をしているかどうしても理解ができずに困っています、よろしければお力を貸していただけるとうれしいです。すでに$csv_column_1にkeyがあるのに右側で何をしているのかが理解できないです。失礼な質問でしたら、言っていただければ削除します。

###問題のソースコード

php

1$csv_array[$unit][$csv_data[$csv_column_1['time']]] = array($csv_data[$csv_column_1['piyo']]);

###該当のソースコード

php

1$csv_column_1 = array( 2 'hoge' => 0, 3 'time' => 1, 4 'piyo' => 2 5); 6 7$unit = array( 8 'test01', 9); 10 11$csv_array = array(); 12 13//$csv_dataはcsvファイルをexplodeしたものが入っています 14$csv_data = explode(',', trim($row)); 15$csv_array[$unit][$csv_data[$csv_column_1['time']]] = array($csv_data[$csv_column_1['piyo']]); 16

###試したこと
$csv_dataの中身はこのようになっています。
Array
(
[0] => 2016/6/27
[1] => 12/23
[2] => 15/35
)
Array
(
[0] => 2016/6/27
[1] => 95/35
[2] => 12/45
)

###補足情報(言語/FW/ツール等のバージョンなど)
XAMMP windows

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

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

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

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

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

guest

回答3

0

こういうのは、よく混乱するので var_dumpで中身をだしましょう
以下のソースを追加してみてください。

PHP

1var_dump($csv_array); 2var_dump($csv_data);

やったけど分からない!!!って場合は、その中身を質問に追加してみてくださいね ^^

投稿2016/06/29 12:40

Mr_Roboto

総合スコア2208

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

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

退会済みユーザー

退会済みユーザー

2016/06/30 01:19

ありがとうございます。var_dumpした場合の表示を追加させていただきます。
guest

0

ベストアンサー

まず、根本的な問題として、ソースコードが間違っています。

PHP

1$unit = array( 2 'test01', 3); 4$csv_array[$unit][$csv_data[$csv_column_1['time']]] = array($csv_data[$csv_column_1['piyo']]);

$csv_array[$unit]

$csv_array[$unit[0]]

とかではありませんか?
*配列のキーに配列を指定することは出来ません。

上記だと仮定した場合の回答になりますが

すでに$csv_column_1にkeyがあるのに右側で何をしているのかが理解できないです。

$csv_column_1は

PHP

1$csv_column_1 = array( 2 'hoge' => 0, 3 'time' => 1, 4 'piyo' => 2 5);

という連想配列なので
$csv_column_1['time']には1
$csv_column_1['piyo']には2
がそれぞれ格納されています。

それを展開した状態で質問の行を書くと

$csv_array[$unit[0]][$csv_data[1]] = array($csv_data[2]);

となります。
とここまで来ましたが、$csv_dataが2次元の単純配列

PHP

1Array( 20=> 3 Array 4 ( 5 [0] => 2016/6/27 6 [1] => 12/23 7 [2] => 15/35 8 ), 91=> Array 10 ( 11 [0] => 2016/6/27 12 [1] => 95/35 13 [2] => 12/45 14 ) 15)

なのであれば、ここで展開できなくなって詰みますね。。。。

うーん、やっぱり元のソースコードが間違っているか映し間違いがあるように思います。。。
$csv_dataの正確な状態をvar_dump($csv_data)してそのまま表示してみて下さい。

##以下、コメントで助言頂いた推測を元に追記

$csv_array[$unit[0]][$csv_data[1]] = array($csv_data[2]);

となるところまでは同じで、
$csv_dataにはそのタイミングで

Array ( [0] => 2016/6/27 [1] => 12/23 [2] => 15/35 ),

と値が格納されているのであれば

$csv_array[$unit[0]]["12/23"] = array("15/35");

となり、$unit[0]を展開すると

$csv_array["test1"]["12/23"] = array("15/35");

となって、2次元の連想配列に単純配列を代入している。
という感じになりますね。

投稿2016/06/29 13:02

編集2016/06/30 05:48
tanat

総合スコア18713

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

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

KiyoshiMotoki

2016/06/30 05:29

横から失礼します。 > $csv_dataが2次元の単純配列なのであれば、ここで展開できなくなって詰みますね。。。。 おそらく「該当のソースコード」は for 文の中に記述されていて、変数 $row がCSVファイルの内容を1行ずつ、格納しているのではないでしょうか? であれば、 > *配列のキーに配列を指定することは出来ません。 以外は説明可能になりますので。
tanat

2016/06/30 05:39

あ、なるほどですね。 仰る通りな気がします。
退会済みユーザー

退会済みユーザー

2016/07/14 04:07

ご連絡がかなり遅れてしまい申訳ございません
guest

0

これって動いてるコードなのかなあ。
左辺では $unit(配列)を添え字にしてるし、
右辺の array() って必要なの?
っていうか中途半端なコードに見えるなあ。

投稿2016/06/29 13:02

takasima20

総合スコア7458

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

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

退会済みユーザー

退会済みユーザー

2016/06/30 00:57

ご返信ありがとうございます。そうですね・・私も右辺の配列がわからなくて他の回答者の方がvar_dumpをすすめていらっしゃるので確認してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問