php

かなり悩んだ・・・。
Perlのクセが抜けず、PHPでも配列で同じことをしようとして、どうしてもうまくいかない。
ずっと避けてきたので、今回はかなり意地になった。

で、結果がこれ。

私がよくやる法則なんですが、
mysql_fetch_arrayで取得したデータを配列に入れつつ、さらにその配列を配列にいれ、
returnで返す方法。

while($row = mysql_fetch_array($rs)) {
  $a1 = $row[0];
  $b1 = $row[1];
  $b2 = $row[2];
  //配列にいれる。これは、$a_data = $row; でもいいんじゃないかと。どうだろ?
  $data = array($a1,$a2,$a3);
  //次に来るrowデータを配列として格納したいので、1回目に入れた配列を、配列に入れる。
  array_push($a_data,$data);
}
//これをぐるぐると回すことで、1行ずつ取得したデータを配列に入れられる。
return ($a_data);

↑これが失敗結果。
Perlならこれで問題ないはずなのに!!(\@とかしなきゃいけないけど。)

な〜んで〜〜!なんでだよ!!

First argument should be an array

こんなエラーまで出る始末。「配列じゃない!」と怒られる。
配列だし!!!よくみろよ!配列なんだよ〜〜〜っ!!!!


つまり、「配列だよ」っていってやんなきゃわかんないらしい。

//配列です!と教えてやる。
$a_data = array();

while($row = mysql_fetch_array($rs)) {
  $a1 = $row[0];
  $b1 = $row[1];
  $b2 = $row[2];
  //配列にいれる。これは、$a_data = $row; でもいいんじゃないかと。どうだろ?
  $data = array($a1,$a2,$a3);
  //次に来るrowデータを配列として格納したいので、1回目に入れた配列を、配列に入れる。
  array_push($a_data,$data);
}
//これをぐるぐると回すことで、1行ずつ取得したデータを配列に入れられる。
return ($a_data);


↑これが成功例。ようやく思い通りの結果が得られた。
は〜〜〜・・・
Perlに比べるとmyとかいちいちつけなくても許してくれると思ったのが
大間違いだったなぁ・・・。

お疲れ。