PHPの配列についての質問です。データベースはMySQLを使用しています。

以下のようなコンマ区切りのデータを配列に入れる場合の話です。

+--------+
| data
+--------+
| A,B,C
| C 
| A,B
+--------+

<?
$connect = mysql_connect(localhost, "root", "pass");
mysql_select_db("test_db", $connect);
$res = mysql_query("SELECT data FROM test_table");

while ($array = mysql_fetch_assoc($res)) {
$data = explode(",", $array['data'] );
print_r($data);
print "<br>";
}
?>

上のコードではこのような実行結果になってしまいます。

Array ( [0] => A [1] => B [2] => C)
Array ( [0] => C )
Array ( [0] => A [1] => B )

これを以下のような配列に格納したい場合、どのようなコードを書けばよいのでしょうか。
よろしくお願いします。

Array ( [0] => A [1] => B [2] => C [3] => C [4] => A [5] => B )

回答の条件
  • 1人3回まで
  • 登録:2007/12/29 09:58:40
  • 終了:2007/12/29 12:27:27

回答(1件)

id:tezcello No.1

tezcello回答回数460ベストアンサー獲得回数692007/12/29 11:02:42

ポイント60pt

$data = explode(",", $array['data'] );

の部分を

$data = array_merge($data, explode(',', $array['data']));

としたらどうでしょう?

id:nekomimies

Warning: array_merge() [function.array-merge]: Argument #1 is not an arrayというエラーが出ましたので、


このように変えてやってみたのですが、

$data = explode(",", $array['data'] );

$data = array_merge($data, $data);


以下のように単純に同じものが二回繰り返されるだけでした。

Array ( [0] => A [1] => B [2] => C [3] => A [4] => B [5] => C )

Array ( [0] => C [1] => C )

Array ( [0] => A [1] => B [2] => A [3] => B )


このように簡単な例ならうまくいくのですが・・・。

$array1 = array("a","b","c");

$array2 = array("d","e");

$m = array_merge($array1,$array2);

print_r($m);

//Array ( [0] => a [1] => b [2] => c [3] => d [4] => e )

2007/12/29 11:33:42
  • id:tezcello
    ごめんなさい。
    while 文の前に、
    $data = array();
    を入れておいて下さい。

    こちらのテスト環境には、MySQL が無いので

    $ary = array('A,B,C', 'C', 'A,B');
    $data = array();
    foreach($ary as $array){
    $data = array_merge($data, explode(',', $array));
    }
    print_r($data);

    としてテストして動作は確認したのですが、誤解を招くかなと $data へ代入する行のみ書いてしまいました。
  • id:nekomimies
    うまく動作しました。
    どうも回答ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません