• ベストアンサー

PHPの配列データの出力方法について

CSVデータをインポート後に、array関数などで処理した後、 処理したデータを順次表示したいのですが、上手くいきません。 現在は、 foreach (func_get_args($csv_output) as $v) ; var_export($v); と記述しているのですが、これだとarrayが画面に出てしまいます。 print、echoだと表示が出来ず、 print_r、var_dumpだとvar_exportより少し多めに余計な表示が出てしまいます。

  • mnbe
  • お礼率33% (1/3)
  • PHP
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • hyter
  • ベストアンサー率73% (31/42)
回答No.3

さらに配列が入れ子になっている…? foreach(func_get_args($csv_output) as $v){     $nest_arr = array_keys($v);     foreach ($nest_arr as $target_key) {         print "$target_key\n";     } }

mnbe
質問者

お礼

出来ました! ありがとうございます!!

その他の回答 (2)

  • hyter
  • ベストアンサー率73% (31/42)
回答No.2

これでどうでしょうか。 foreach (func_get_args($csv_output) as $k => $v) ; print "$k\n";

mnbe
質問者

補足

ご回答ありがとうございます。 試してみたところ、 0 と表示されます。。

  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.1

どういった表示になってほしいのかが、よくよみとれませんが。 配列変数の内容が数値添え字配列で、値だけ並べたいなら、implode を使ってみたら? $v = array('a','b',1,2); echo implode(',',$v);

mnbe
質問者

補足

現在は下記ように表示されています。 array ( ' ●●●●(=配列の中身1) ' => array ( ), ' ●●●●(=配列の中身2) ' => array ( ), ' ●●●●(=配列の中身3) ' => array ( ), ) これを、●●●●の部分だけ表示出来るようにしたいと考えています。

関連するQ&A

  • phpで、配列の値が意図せず変わってしまいます。

    環境はphp4です。 for、もしくはforeachを使って配列の中身を変えたいと思っています。 $array1 = array(123csv, 456csv, 789csv); for($a = 0; $a <= count($array1) -1; $a++){ $array2[] = "a" . $array1[$a]; } echo $array1[0]; echo $array2[0]; 上記の出力結果がなぜか異なり困っています。 array1[0]は「123csv」、 array2[0]は「a113csv」、もしくは「a12300v」 などとなってしまいます。 先頭に「a」を付加しない場合も「113csv」、もしくは「12300v」という結果です。 ちなみに$array1はexplodeを使って空白文字をを分割して作成した配列です。 これなバグなのでしょうか。 原因、回避策など、いろいろ調べましたが検討がつきません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPの多次元配列について

    HTMLでホームページを作れる以外はプログラムに関しほぼ素人です。 環境 XAMPP1.70(最新)にてアパッチなど一括ダウンロード PHP言語にて3×4の表で以下の数値を多次元配列にて作成しようと思っているのですが、当方初心者なもので、 以下のコード(細かい部分は省略しています)、特にforeachがネストになっている部分の処理の流れがいまいちよくわかりません ~~~~~~~~~~~~~~~~~~~~~~~~~ <table border=2> <th>都市名</th> <th>最高気温</th> <th>最低気温</th> <?php  $data=array( array("東京"32,25) array("名古屋",45,67) array("埼玉",32,67) array("大阪",86,34) ) foreach($data as $city){ print "<tr>"; foreach($city as $value){ print "<td>{$value}</td>"    ●1回目foreachからここまでの流れがいまいち分かりません } print "</tr>"; ?> ~~~~~~~~~~~~~~~~~~~~ 一つ目のforeachにて、配列$dataが指定されていますので外側の配列を処理していくと思うのですが、具体的にどういう順番で処理されていくのでしょうか。 またforeach()の中の"$cityが最終的に$valueに格納という形になっていますが、10~13行目のarray("東京",32,25)とどのような関係で処理されていっているのか教えていただけませんでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPで配列をPOSTデータで送った場合の取り出し方を教えてください。

    PHPで配列をPOSTデータで送った場合の取り出し方を教えてください。 知恵袋でも質問したのですか、使い方をよくわかっておらず、補足が追加出来なくって、回答者の方に返事が出来なくなってしまいました。申し訳ありません。 プログラム初心者です。始めたばかりで、自分で考えて知っている範囲で組もうとしているのですが、 例えば <form method="POST" action="○○○"> <input type="checkbox" name="color[]" value="赤" />赤<br /> <input type="checkbox" name="color[]" value="青" />青<br /> <input type="checkbox" name="color[]" value="緑" />緑<br /> <input type="submit" value="送信" /> とこのように書いてすべてにチェックを付けて送った配列のデータはどのように取り出したら良いのでしょうか? foreachで下記のように、 $x = $_POST['color']; foreach( $x as $value ){ echo "色 = ". $value."<br />\n"; } exit; $_POST['color']の配列を取り出そうすると Invalid argument supplied for foreach() と表示されてしまいます。 var_dumpで配列を表示させると、 string(3) "Array" と表示され確かに配列として届いていると思います。 確かにチェックはいれて送信もしています。 print "{$_POST['color']}"で表示してみると、"A"と"r"と"r"でした。 チェックボックスを10個に増やして、それぞれ$_POST['color'][0]~[9]まで 表示させてみたところ、はじめの5個はArrayも文字がいつつ表示され、残りは空白でした。 知恵袋のほうで、取り出し方が間違っているとの指摘をいただきましたが、どのように取り出したら良いのでしょうか。 どなたかお手数ですが、教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • csvファイルを配列へ格納しブラウザへ出力

    <?php #CAT csvファイルを開く $fp_c = fopen("test.csv","r"); #domain csvファイルを開く $fp_domain = fopen("test.csv","r"); print "<table border='1'>"; #fgetcsv関数がfalseを返却するまで実行 while($c_data = fgetcsv($fp_c)){ print "<tr>"; #csvファイルの列数だけ実行 for($i=0;$i<count($c_data);$i++){ print "<td>".$c_data[$i]."</td>"; } print "</tr>"; } print "</table>"; var_dump($c_data); fclose($fp); ?> このようなプログラムをつくってcsvファイルの各セルを配列$c_data[$i]へ格納している(つもり) なのですが、var_dump($c_data);を入れると bool(false)と表示されてしまいます。 このプログラムではcsvファイルの中身を表示できても配列に格納されていないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 配列から特定の語を含むものだけを取り出したいです

    var_dump($text); を実行すると array(XX) { [0]=> string(YY) "りんご食べたい。" [1]=> string(YY) "イタリアン食べたい。" [2]=> string(YY) "ごりら見た。" [3]=> string(YY) "雪まつりに行きたい。" [4]=> string(YY) "うさぎ可愛い!!" } という配列があり、そこから $key = array("りんご","ばなな","ごりら","うさぎ"); の単語を含む文章だけ取り出したいです。 以前も同じような質問をし、アンサーをいただき、このように試したのですが、 $key_text = array(); foreach($text as $v1){ foreach($key as $v2){ if(strpos($v1[0], $v2) !== false){ $key_text[] = $v1[0]; } } } var_dump($key_text); array(0) { } と返ってきてしまいます。どこが間違っているか教えて下さい。お願いします。

    • ベストアンサー
    • PHP
  • [php]mysqlデータ配列取得について

    お世話になります。検索しても中々辿り着けなかったので質問させていただきます。 途中から //mysqlより全データ検索 $result = mysql_query('SELECT id FROM hoge ORDER BY id'); //添字配列として全データ取得   while($row = mysql_fetch_row($result)){ //ここの処理で$rowの配列を一行の配列として足していきたい。 var_dump($row); print('<br />');   } 現在の出力内容は array(1) { [0]=> string(1) "5" } array(1) { [0]=> string(1) "6" } array(1) { [0]=> string(1) "7" } array(1) { [0]=> string(1) "8" } こうした形で出力されます。 理想の出力内容は各arrayを足して、 array(4) { [0]=> string(1) "5" [1]=> string(1) "6" [2]=> string(1) "7" [3]=> string(1) "8"} 一行として出力したいのですが、一向にできる気配がありません。 初歩的なものだと思いますが、とても困ってます。何卒よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • 配列の出力方法について(クラス?)

    お世話になります。 $_SESSION['test']をvar_dumpで出力した際に、 ["items":"Test":private]=>array(1) {[0]=>string(3) "100" } といった値がありましたがこれをechoすることは可能でしょうか? $_SESSION['test']['items']['Test']['0']といったように・・・ 大変初歩的な質問かと思いますがよろしくお願い致します(x_x)

    • ベストアンサー
    • PHP
  • [PHP]ループ内の配列取得、表示について

    質問させていただきます。 データをDBから取得しwhileで全てのデータを配列として出力しているとします。 (whileの中で出力し、3つのデータがあるため3回ループされている) 結果 array(1) { [0]=> string(5) "17:10" } array(2) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" } array(3) { [0]=> string(5) "17:10" [1]=> string(5) "17:25" [2]=> string(5) "11:15" } 現在の出力内容は、 var_dump[$hoge[0]] 出力結果 string(5) "17:10" string(5) "17:10" string(5) "17:10" var_dump[$hoge[1]] 出力結果 NULL string(5) "17:25" string(5) "17:25" var_dump[$hoge[2]] 出力結果 NULL NULL string(5) "11:15" という出力になっていますが、最後のarray(3)の部分だけを抜き出したいです。 その場合はどのようにすればよいのでしょうか? -理想の結果- 利用したいのはarray(3)の部分だけ。 var_dump[$hoge[0]] "17:10" var_dump[$hoge[1]] "17:25" var_dump[$hoge[2]] "11:15" 説明不足かもしれませんが、よろしくお願いいたしますm(_ _)m

    • ベストアンサー
    • PHP
  • PHPの配列の扱い方

    配列を勉強中なのですが、 よく判らなくなってしまったので教えてください。 print var_dump($aa); を実行すると array(5) { [0]=> string(2) "AE" [2]=> string(1) "C" [4]=> string(1) "F" [5]=> string(1) "N" [6]=> string(1) "Y" } とか array(2) { [27]=> string(2) "BA" [41]=> string(2) "BP" } とかかえってくる配列$aaがあるのですが、 この"AE"や"C"や"BP"など文字情報だけを見たい場合はどのように表記すればいいのでしょうか?

    • ベストアンサー
    • PHP
  • PHP5で、utf-8形式のcsvファイルを読み込む際、常にファイル内

    PHP5で、utf-8形式のcsvファイルを読み込む際、常にファイル内容の行数+1を返すようにしたいのですが、初回(ファイルの中身がないとき)がうまくいきません。どうなおせば、よいでしょうか。 ■うまく動作しないコード setlocale(LC_ALL, 'ja_JP.UTF-8'); $fp = fopen('data.csv','r'); $data = array(); while ($row= fgetcsv($fp)) { $data[] = $row; } $no = 1; if (0 < count($data)) { $no = count($data); $no++; } var_dump($no); fclose($fp); ■現在の状態 ---------------------------------------- ▽csvファイルの内容が、下記の場合 1,名前,内容 2,名前,内容 最終的なvar_dump($no);は、3 → O.K. ---------------------------------------- ▽csvファイルの内容が、下記の場合 1,名前,内容 最終的なvar_dump($no);は、2 → O.K. ---------------------------------------- ▽csvファイルの内容が、下記(中身が何もない)の場合 最終的なvar_dump($no);は、2 → × この部分を1にしたいのですが、どうすればよいでしょうか。 ---------------------------------------- また、csvファイルの内容が空の(つもりの)状態で、 var_dump($data);すると、下記表示となってしまいます。 これは、なぜでしょうか? array(1) { [0]=> array(1) { [0]=> string(3) "?" } }

    • ベストアンサー
    • PHP

専門家に質問してみよう