• ベストアンサー

arrayをどうやって表示するのか?

array をどうやって表示したら良いのでしょうか? 一応参考書には下記のようなコードがあってそのまま打つと普通にブラウザには出てこないので、print を文頭につけたのですが、「array 」としか出てこないので、どうしたら良いのかわかりません。当然のことながら$cだけ表示できたら良いです。どうかご教授よろしくお願いします。 $a = array(1,2,3); $b = array(1,3,4); $c = array_diff($a,$b);

  • PHP
  • 回答数3
  • ありがとう数6

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>print_rとprintの違いはどういうものなのでしょうか? print_rはあくまでデバッグ用の関数としての位置付けなので あまり実効性はありません。 >あとforeachを回答者さんと同じもので入れてみると、 >1、2、3のすべての数字が出てきました。 $a = array(1,2,3); というのは0から始まる配列にデータを格納することですので $a[0]に1、$a[1]に2、$a[2]に3というデータがはいっています。 これをforeachで取り出しているので順番に1,2,3と表示されます。 まずは配列自体を理解していないと思いますので、しっかり勉強して 理解した方がよろしいかと思います。 http://www.php.net/manual/ja/ref.array.php http://www.php.net/manual/ja/control-structures.foreach.php

kjfcaoi
質問者

お礼

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

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

表示するだけならprint_rをつかう <?PHP $a = array(1,2,3); print_r($a); ?> チャンと処理するならforeachで回す <?PHP $a = array(1,2,3); foreach($a as $val){ print $val."<br>"; } ?>

kjfcaoi
質問者

お礼

回答を頂き、ありがとうございます。print_rとprintの違いはどういうものなのでしょうか?あとforeachを回答者さんと同じもので入れてみると、1、2、3のすべての数字が出てきました。これはどうなっているのでしょうか?ぜひ、ご教授よろしくお願いします。

回答No.1

ここでは「1,2,3」という配列をaとし「1,3,4」という配列をbとしています。 そこからaとbの差分を取り出してそれをcとしているわけですが arrayは関数なのでそのままでは表示できないので、aやb、c といった変数に代入します。 なのでここで取り出した差分を表示するときは echo $a; や print($a); などとします。 自分もこの間から始めたばかりで間違っているかもしれませんm_ _m

kjfcaoi
質問者

お礼

回答、ありがとうございます。しかし残念がら自分と同じ間違いをしていますね。親切に回答していただきありがとうございました。

関連するQ&A

  • Arrayを並びかえる!?

    お世話になります。 $w をprint_rすると Array ( [0] => Array ( [email] => gmail.com ) [1] => Array ( [email] => yahoo.co.jp ) [2] => Array ( [email] => hotmail.com ) ) になり、$aは Array([0]=>yahoo.co.jp, [1]=>gmail.com, [2]=>infoseek.com) になります。 $wと$aをarray_diffをしようし、お互いに重複している値を消去し、消去するにはどうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • HASH ARRAYの表示方法

    「print "@$token"」 とすると 「xxxx HASH(0x10063c0) ARRAY(0x10063a0) xxxx」 のように表示されます。 「HASH ARRAY」 の内容を表示したいのですが、どのようにすればよいのでしょうか? いろいろ試行錯誤したのですがどうしてわかりません。 具体的には「HTML::TokeParser」によって得た返値です。 $p = HTML::TokeParser->new(shift||"test.htm"); while (my $token = $p->get_tag("table")) { print "@$token\n"; } (参考) http://homepage3.nifty.com/hippo2000/perltips/html/TokeParser.htm

    • ベストアンサー
    • Perl
  • array_combineがうまくいかないので、教

    array_combineがうまくいかないので、教えてください ■やりたいこと ・一方の配列をキー、もう一方の配列を値として、新たな配列を生成したい ■現状 $c = array_combine($a , $b);とやると、 Array c (   [1] => 2   [2] => 0   [3] => 0 ) となってしまいます ■元データ Array a (   [0] => 1   [1] => 2   [2] => 2   [3] => 1   [4] => 3   [5] => 1   [6] => 2   [7] => 2   [8] => 3   [9] => 1 ) Array b (   [0] => 0   [1] => 2   [2] => 0   [3] => 2   [4] => 2   [5] => 0   [6] => 2   [7] => 0   [8] => 0   [9] => 2 ) ■質問 ・元データから、下記結果を得るにはどうすればよいでしょうか? Array c (   [1] => 0   [2] => 2   [2] => 0   [1] => 2   [3] => 2   [1] => 0   [2] => 2   [2] => 0   [3] => 0   [1] => 2 ) ・また、array_combineだとなぜ望む結果が得られないのでしょうか? 重複しているから?

    • ベストアンサー
    • PHP
  • CollectionとArrayの呼び出し順

    こんばんは。 いつも勉強させてもらっています。 ご教授ください。 セル範囲A1:B3に適当な値を入れ 下記のコードを実行してみました。 ----------------------------------------------- Sub Test()   Dim Rng As Range   Dim myRange As Range   Set myRange = Range("A1").CurrentRegion     For Each Rng In myRange       Debug.Print "Collection: " & Rng.Value     Next Rng   Dim Ary   Dim myArray      myArray = Range("A1").CurrentRegion.Value     For Each Ary In myArray       Debug.Print "Array: " & Ary     Next Ary End Sub ----------------------------------------------- その結果、 Collectionの場合は、 A1>B1 >A2>B2 >A3>B3 Arrayの場合は、   A1>A2>A3 >B1>B2>B3 の順で呼び出されました。 なぜこのような違いがでるのか分かりません。 教えてください。 宜しくお願いします。   

  • array_combine()について

    http://phpspot.net/php/man/php/function.array-combine.html こちらを参考に配列のまとめ方と取り出し方を模索中です。 $a = array('green', 'red', 'yellow'); $b = array('avocado', 'apple', 'banana'); $c = array_combine($a, $b); ↑こちらは、 foreach($c as $key => $value){ ~ } ↑このような感じでそれぞれ取り出せると思います。 ここまではいけました。 この状態で対象が3つ以上になった場合は、どういう対応方法があるのでしょうか。 $a = array('green', 'red', 'yellow'); $b = array('avocado', 'apple', 'banana'); $hoge = array('100', '150', '80'); array_combine()でできるのでしょうか。 他の関数を使うのでしょうか。 不慣れですみません。 アドバイスいただけますとうれしいです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 連想配列の一部分を全て表示したいのですが・・。

    すみません。phpの事はあまりわからないのですが、以下のような連想配列がありまして、 (下記のような連想配列が大量にあります。) Array ( [0] => Array ( [a] => 1111 [0] => 1111 [b] => 2222 [1] => 2222 [c] => 3333 [2] => 3333 ) [1] => Array ( [a] => 5555 [0] => 5555 [b] => 6666 [1] => 6666 [c] => 7777 [2] => 7777 ) ) 上の配列から下記の配列のみ全て表示したいのですがどう記述したらよいでしょうか。 Array[0][a] Array[0][b] Array[0][c] Array[1][a] Array[1][b] Array[1][c]

    • ベストアンサー
    • PHP
  • mysql_fetch_arrayを何度も使いたい

    phpとmysqlを使っています。 配列$valuesがあります。 その値は一部だけmysqlのフィールドdの中に格納しています。 両方の値を比較してもし一致すればチェックボックスを作るという処理をしています。 また、同時に一致した数もそれぞれ取得したいと考えています。 イメージ的には、□はチェックボックスとして()には、その配列の値とフィールドdの値に一致する数が入ります。 □(33) □(13) □(1) □(22) □(3)  □(16) □(15) □(9) □(23) □(32)  □(4) □(16) □(7) □(6) □(11)  □(5) □(21) □(1) □(4) □(15)  □(13) □(10) □(3) □(19) □(8)  □(0)のとき非表示になるようにしています。 <?php $m = mysql_connect('localhost','root',password); $mm = "SELECT * FROM tableA"; mysql_set_charset('utf8'); $mmm = mysql_query($mm,$m); $values=array( "chk1"=>array("a1","a2","a3","a4","a5","a6","a7","a8","a9","a10") ,"chk2"=>array("b1","b2","b3","b4","b5","b6","b7","b8","b9","b10") ,"chk3"=>array("c1","c2","c3","c4","c5","c6","c7","c8","c9","c10") ); foreach($values as $key=>$array){ foreach($array as $val){ $checked=(isset($_REQUEST[$key]) and in_array($val,$_REQUEST[$key]))?" checked":""; $count = ""; while($r = mysql_fetch_array($mmm)){ if($val === $r['d']){$count++:} } if($count>0 && !$count==""){ $h = $h.htmlspecialchars($val, ENT_QUOTES, 'UTF-8').'<input type="checkbox" name="'.$key.'[]" value="'.$val.'"'.$checked.'/>('.$count.') '."\n"; } } } print "<br />\n"; } ?> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form method="get" action="checkbox2.php"> <?php echo $h; ?> <input type="submit" value="送信" /> </form> </body> </html> これではmysql_fetch_arrayが一度しか使えないので、配列の値a2以降が進みません。 こういうときはどのようにするべきでしょうか。 また、if($val === $r['d']){$count++:}でカウントしていますが、もっといい方法はありますか。 その他変な箇所があれば指摘して頂けると嬉しいです。 お願いします。

    • ベストアンサー
    • PHP
  • PHP array関数の[ ]内の値の表示

    mySQLのデータベースでテーブルを作成、af1~af5のカラムには、に下記のように数値が入っているものと入っていないもの(NULL)があります。 af1 ='10' af2 ='15' af3 ='' af4 ='20' af5 ='' 【作りたいPHP】 数字が入っているカラムがあれば、そのカラム番号(af1なら1、af2なら2)のうちもっとも若い番号1つだけ抽出(上記のカラムであれば3)し、全てのカラムが埋まっていれば0を返すPHPを組みたいと考えています。 <?php $a2 = array( 1=>$row_friend_name['af1'], 2=>$row_friend_name['af2'], 3=>$row_friend_name['af3'], 4=>$row_friend_name['af4'], 5=>$row_friend_name['af5'], ); $empty = array_filter($a2, function($i){return !$i;}); var_dump($empty); ?> 上記のPHPを組んだところ、var_dumpの答えが array(2) [3]=>NULL [5]=>NULL となります。 これを流用し、$emptyの中に[1]や[2]などの記号が入っているかどうかを見極めさせ、そこから1,2,3の数字(空きカラム)を導きだそうと考えました。 "array(2) [3]=>NULL [5]=>NULL"であれば、[1]や[2]を順番に探していき、最初に出てきた[3]を見つけて、'3'を表示させることになります。 *[3]* というワイルドカードを使ったlike検索のような形にしてみましたが、残念ながら検知してくれません。「見つからなかった」という意味の「0」が答えになっています。 マニュアルを何度も読見返したのですが、どうしても[3]=>NULL の3を抽出、表示する方法が分かりません。 大変お手数ですが対応方法についてご教授頂きたくお願い致します。 (なんとか自分で対応しようとしたのですが、納期と他の仕事の関係で、これ以上長時間勉強する時間がとれません。何卒宜しくお願い致します) 当方が作って検知出来なかったPHP <?php $a2 = array( 1=>$row_friend_name['af1'], 2=>$row_friend_name['af2'], 3=>$row_friend_name['af3'], 4=>$row_friend_name['af4'], 5=>$row_friend_name['af5'], ); $empty = array_filter($a2, function($i){return !$i;}); if (in_array('*[1]*', $empty, true)) { echo "'1\n"; } elseif (in_array('*[2]*', $empty, true)) { echo "2\n"; } elseif (in_array('*[3]*', $empty, true)) { echo "3\n"; } elseif (in_array('*[4]*', $empty, true)) { echo "4\n"; } elseif (in_array('*[5]*', $empty, true)) { echo "5\n"; } else { echo "0\n"; } ?>

    • ベストアンサー
    • PHP
  • 一つのカラムから、データを分けて取り出す方法

    現在、PHP4とMysql4.1の環境を利用しています。 カラムからのデータ抽出で、うまくいきません。 例えば、カラムに次のような形でデータがあった場合、それをカンマで区切って別々に抽出し、かつ重複を除いてブラウザに表示させるにはどのような方法があるでしょうか。 +-------------+ | A,B,C,A,B,C | +-------------+ 上記配列をDBからmysql_fetch_arrayで取得し、 その後splitして、printしましたが、 ブラウザ上では「array」と表示されてしまいました。 何か方法がありましたら、 ご教授いただければ幸いです。

    • ベストアンサー
    • PHP
  • in_array

    $a=array("あ"); $b= "あ" $c=in_array($a,$b) if( この処理の時に、あの前と後の値を指定したい場合なんて書きますか? (2)あが2つ連続であった場合は違う処理をしたいです。その場合どう書けば良いですか?

    • ベストアンサー
    • PHP

専門家に質問してみよう