トップページ⇒php
1001コメント331KB

【PHP】下らねぇ質問はここに書き込みやがれ 32

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/11/06(月) 22:07:16ID:???
PHPに関するくだらねぇ質問用スレです。ここならお前の下らない質問に回答があるかも知れません。

まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

【前スレ】
 【PHP】下らねぇ質問はここに書き込みやがれ 31
 http://pc8.2ch.net/test/read.cgi/php/1161733546/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しない)
・ サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0233nobodyさん2006/11/10(金) 00:29:55ID:LNYLSoFr
phpMyAdminのテーブル内容を表示すると、
「プライマリーキーを定義すべきです」
と編集、削除ボタンが「?」になるのですが、原因は何なんでしょうか?
0234nobodyさん2006/11/10(金) 00:34:17ID:???
>>227
おまえ、1度も実行しないで言ってるだろう。
>>226ですでに"〜"の中身だけ抜き出してるぞ。
0235nobodyさん2006/11/10(金) 00:35:57ID:???
>>233
俺思うにプライマリキーを定義すべきなんじゃね?
0236nobodyさん2006/11/10(金) 00:39:41ID:???
echo uniqid(""); でユニークなIDを生成出来ますが、
4桁など桁数を指定して生成するにはどうしたらいいのでしょうか?
0237nobodyさん2006/11/10(金) 00:42:20ID:???
>>236
それじゃユニークにならないから無理
02382192006/11/10(金) 00:42:26ID:0rGbXNdx
>>234
実行しましたよ。Array ( [0] => title="IPアドレス" class=crosslink[1] =>・・
しかし、こうなってしまいました。。。
0239nobodyさん2006/11/10(金) 00:57:34ID:???
>>238
[1]の内容が肝心だろww
わざとやってんのかww
0240nobodyさん2006/11/10(金) 00:58:24ID:9aG6gw2r
>>223
あ、親切な方だ。ありがとうございます!
02412192006/11/10(金) 01:10:33ID:0rGbXNdx
>>239
わざとなんてことはないですよ。
echo $match[1]; で出力しようとすると何も表示されないのです。
それで、print_r($word); で出力しています。
0242nobodyさん2006/11/10(金) 01:13:52ID:???
>>241
なんか環境がおかしいんじゃないの?

$str = ' title="IPアドレス" class=crosslink ';
preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
echo $match[1];

で結果が

IPアドレス
02432192006/11/10(金) 01:27:13ID:0rGbXNdx
>>242
うーん・・、219のソースで
$kensaku2を preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
に変更して、出力を echo $match[1]; とした場合、正しく表示される
ものでしょうか?うまく表示できないのですが・・・
0244nobodyさん2006/11/10(金) 01:29:23ID:???
219のソースなんざ知らん。
元々のソースが汎用性のない腐ったソースなんだから
そこにどう組み込むかはお前が考えるべきことだ。
0245nobodyさん2006/11/10(金) 01:33:15ID:???
>>243
$str = ' title="IPアドレス" class=crosslink ';
$word = array();
while(1){
$kensaku2 = preg_match('/title="([^"]*)" class=crosslink/', $str, $match);
if($kensaku2 == FALSE){
break;
}else {
$match = $match[1];
array_push($word, $match);
}
$pos = strpos($str, $match);
$str = substr($str, $pos+$kensaku2);
}
print_r($word);
とした場合の結果
Array
(
[0] => IPアドレス
)
これで何が不満?
02462192006/11/10(金) 01:43:41ID:0rGbXNdx
>>245
いえ、全くございません。ありがとうございます。
$match = $match[0]; だと、
Array ( [0] => title="IPアドレス" class=crosslink
となってしまったのに、
$match = $match[1]; とすると
正しく、Array ( [0] => IPアドレス と表示されました。
無知な私に[0],[1]とで、どのような違いがあるのか教えていただけると
ありがたいのですが。
0247nobodyさん2006/11/10(金) 01:59:11ID:???
ここってPHPとMySQLに関することは聞いては駄目なのでしょうか?
データベース板には質問スレとか無くて・・・。
02482462006/11/10(金) 02:15:29ID:0rGbXNdx
なるほど。preg_matchの使い方が理解できました。
0249nobodyさん2006/11/10(金) 02:20:14ID:???
>>247
ここらへんのスレで聞いたらいいんじゃね?

MySQL 5.0
http://pc8.2ch.net/test/read.cgi/db/1081818145/

mysqlについて語ろう
http://pc8.2ch.net/test/read.cgi/db/1056947097/

PHPに依存した部分がある質問ならここでもいいけど。
0250nobodyさん2006/11/10(金) 02:26:06ID:???
ファイルのアップロードに関して、どちらかというとタグ的な内容を含んだ質問になるのですが、
複数の連番ファイルを一括してアップできるスクリプトを作ろうと思っています。

通常ファイルのアップには「参照」ボタンを押すなりして、ファイルへのパスを入力する必要がありますが、
その際に「E:\jpg\01.jpg」を指定したとして、「E:\jpg\30.jpg」までを一括してアップさせることは可能でしょうか。

fileにはvalue値の設定ができないため、そのような処理は不可能でしょうか。
ユーザがいちいち30個の欄に1.jpg、2.jpg・・・と指定する手間を省けるスクリプトを作ろうとしています。

環境 => OS:FC3 PHP:5.1.5
0251nobodyさん2006/11/10(金) 02:34:22ID:???
ちみは、自分の知らないうちにPCの中のファイルを勝手にアップロードされたらどう思う?
0252nobodyさん2006/11/10(金) 02:35:52ID:???
>>250
zipにしてアップロード。
0253nobodyさん2006/11/10(金) 02:41:56ID:???
>>250
できないことはないけど、利用者にはわかりにくくなりそう。ファイル名とかある程度固定されちゃうだろうし。
0254nobodyさん2006/11/10(金) 02:43:36ID:???
>>249
以前何度か聞いたのですが、板自体が過疎化しているので、回答がありませんで・・。
やりたいことは、MySQLの特定のテーブルにデータが入っていたらTRUE
入っていなかったらFALSEで分岐出来たらいいのです。
<?php
$sql = "select * from test_table";
$rst = mysql_query($sql, $con);
if(rst){
while($row = mysql_fetch_array($rst)) {
echo $col["id"];
}}else{
echo"登録がありません";
}
?>

こういうので出来ると思ったのですが、無理みたいで・・。
もしよろしければアドバイスいただけると助かります。
0255nobodyさん2006/11/10(金) 02:54:25ID:???
>>254
$sql = "select * from test_table";
$rst = mysql_query($sql, $con);
if(mysql_num_rows($rst)){
while($row = mysql_fetch_array($rst)) {
echo $col["id"];
}
}else{
echo"登録がありません";
}
かな
02562542006/11/10(金) 03:04:48ID:???
>>255
出来ました!mysql_num_rowsを使うんですね。
勉強になりました。ありがとうございます。
0257nobodyさん2006/11/10(金) 03:16:23ID:???
>>250
通常fileタイプのinputタグのvalueは無視されるから、
サーバーサイドでやるのは無理。
02582502006/11/10(金) 03:18:25ID:???
レス�dクスです。やはり余り現実的でないということでしょうか。
とりあえずZIPにするよう促すようにしてみます。

実はZIPにする手間を省くのが目的だったりしてます。
サーバ側でzip圧縮すればユーザの手順は簡略されますし。
(一昔前だとZIP圧縮するだけでもPCがモタついてイライラした記憶が・・・)
0259nobodyさん2006/11/10(金) 07:09:48ID:???
>>257
クライアントサイドでも無理
0260nobodyさん2006/11/10(金) 07:47:27ID:???
クライアントサイドなら方法が無いわけでもない。
ただし敷居が高いうえに、板違い。
0261nobodyさん2006/11/10(金) 08:21:45ID:???
まさかIEコンポーネントだのActiveXだのFirefoxのエクステンションとか言い出さないよね?
0262nobodyさん2006/11/10(金) 08:56:36ID:???
Javascriptだけでで叶姉妹
0263nobodyさん2006/11/10(金) 09:54:51ID:???
JSじゃムリじゃない?ActiveXならできるけど。
0264nobodyさん2006/11/10(金) 10:36:19ID:cXndf+IB
uwscスクリプト使えば可能
0265nobodyさん2006/11/10(金) 11:27:21ID:???
そのスクリプトをサーバーサイドから呼び出すことはできんのか?
0266nobodyさん2006/11/10(金) 11:59:28ID:???
<body>
<p>001</p>
<p>002</p>
<p>003</p>
</body>

上記のような分で、
<p></p>に囲まれている部分だけ取得して配列に格納したいのですが、
どのような方法があるのでしょうか?
0267nobodyさん2006/11/10(金) 12:01:39ID:???
preg_match_all()
XML_HTMLSax3
0268nobodyさん2006/11/10(金) 13:54:08ID:???
>>266
頑張ればstrpos+substrでもできなくはないよ
0269nobodyさん2006/11/10(金) 15:20:56ID:yWCpYZUV
正規表現で文字列を取り出し、配列に格納し、出力すると
Array ( [0] => Array ( [0] => A [1] => B [2] => B [3]=> C
[4] => D [6] => F)
となり、[1]と[2]の値が同じなので、array_uniqueで置換すると、
Array ( [0] => Array ( [0] => A [1] => B [3]=> C
[4] => D [6] => F)
というふうに、配列の番号が詰められず、[1]の次が[3]となってしまいます。
うまく配列の番号を詰める(連番となる)にはどうすれば良いでしょうか?
0270nobodyさん2006/11/10(金) 15:24:50ID:???
array_valuesでもかければ?
0271nobodyさん2006/11/10(金) 15:28:46ID:???
>>269
arraymergeでもインデックスの付け直しが出来た気がする
0272nobodyさん2006/11/10(金) 15:29:33ID:yWCpYZUV
>>270
array_valuesでできました。ありがとうございます。
0273nobodyさん2006/11/10(金) 15:31:51ID:1a5fPov5
サーバサイドの利用可能なドライブ情報を取得したいのですが、
何か良い方法はあるでしょうか?
公式マニュアルは参照しましたが、カレントディレクトリの情報は
取得できるものの、ドライブ情報を取得できるものは見当たりませんでした。

最悪、a:/〜z:/をループさせつつ総当りでscandirとかすることになるのかな
と考えていますが、できれば避けたいと考えています。


環境:WinXP SP2,Apache2.2.3(SSL付き) PHP5.1.6
経験:PHPは10日間くらい。
0274nobodyさん2006/11/10(金) 15:35:55ID:???
>>273
たしかpeclでwin32のapiの関数呼びたい放題のやつがあった気がするので、そっちを当たってくれ。
0275nobodyさん2006/11/10(金) 15:45:50ID:???
>>273
Win32APIにGetLogicalDriveStringsってのがあるから
それをttp://www.php.net/manual/ja/ref.w32api.phpで呼べばいけるんじゃないかな。
0276nobodyさん2006/11/10(金) 15:47:10ID:1a5fPov5
>>274

これかなあ?
http://php.mirror.camelnetwork.com/manual/ja/ref.w32api.php

Win32API使うってのは盲点でした。PHPって手広いなあ。
ちょっといろいろいじってみます。
素早いお答えありがとうございました。
0277nobodyさん2006/11/10(金) 15:49:55ID:1a5fPov5
>>275

うお、追加のお答えありがとうございます。
なんか標準じゃつかない関数みたいなので勉強が必要ですが、
APIの名前教えてもらって助かりました。
0278nobodyさん2006/11/10(金) 16:03:40ID:???
<?
if($name==""){
echo"$nameが空です";
}else{
echo $name;
}

このような入力チェックがあったとして、name以外に変数が増えた時
その分上記のソースをコピーしていました。

しかし、基本的には変数名以外の内容は同じですし、数行のコードをコピーすると
長いので、もっと良い方法が無いかと思い、質問しました。
0279nobodyさん2006/11/10(金) 16:10:47ID:???
>>278
値の整合性チェックは時と場合により結構かわるから、
これをやれば大丈夫というのはないよ
汎用的な validatator も探せばあるだろうけど、使い方が直感的でないこともしばしば

もし、本当に変数名以外に違いがないなら
配列にでも一度入れてループすれば良い

$checkArr = array('name' => $name, 'age' => $age);
foreach ($checkArr as $key => $val) {
 if ($val=="") {
   echo "$keyが空です";
 }
 else {
   echo $val;
 }
}
0280nobodyさん2006/11/10(金) 16:11:36ID:???
>>278
$param_list = array('name', 'hoge', 'hoge2'); //パラメータ名の一覧
foreach($param_list as $param) {
if($_GET[$param] == ""){
echo"$_GET[$param]が空です";
}else{
echo $_GET[$param];
}
}
0281nobodyさん2006/11/10(金) 16:11:37ID:???
お前いつもここに張り付いてんの?
さっさと就職しやがれ!
0282nobodyさん2006/11/10(金) 16:11:44ID:???
>>278
なんか知らんが配列をforeachすりゃいいんでね?

foreach ($_POST as $key => $value) {
 if ($value === "") {
  echo "$keyが空です";
 } else {
  echo $value;
 }
}
0283nobodyさん2006/11/10(金) 16:13:50ID:???
>>281
0284sage2006/11/10(金) 16:26:30ID:1a5fPov5
入力フォームのnullチェックとかなんかな。
実際には不正な文字列じゃないかもうちょとチェックするので
あまり同じ関数の使い回しはしないんじゃないかなあ。

Javascriptになるけど、こんなの書いたりもしてました。
画面遷移なしでも多少チェックしたいときもあるし。
※ソースは適当です。

<input type=text name=userid value="">
<input type=text name=pass value="">
<input type=submit onclick="javascript:nullcheck(this); return false;">

function nullcheck(obj)
{
 obj=obj.forms[0];
 for(var i in obj.elements.length)
 {
  if(obj.elements[i].type != "text") continue;
  if(!obj.elements[i].value)
  {
   alert(obj.elements[i].name + "が入力されていません。");
   return false;
  }
}
0285nobodyさん2006/11/10(金) 16:28:44ID:1a5fPov5
うお、みんなごめんよ。。。
0286nobodyさん2006/11/10(金) 16:50:59ID:???
オイラの場合

function err($txt) {
echo $txt;
echo "</BODY></HTML>";//この辺はスクリプトによって変える
exit;
}
if ($name == "") err("名前がない");
if ($mail == "") err("メールがない");
if (is_numeric($num)) err("NUMBERは数字で入れれ");
みたいにする。
0287nobodyさん2006/11/10(金) 16:52:04ID:???
お呼びじゃないよ
02882862006/11/10(金) 16:52:24ID:???
最後
if (!is_numeric($num)) err("NUMBERは数字で入れれ");
だった。
02892782006/11/10(金) 17:46:15ID:???
>>279-280,282
返答が遅れてすみません。
foreachを使う方法だと、表示位置が指定出来ませんよね?
テーブル(<table>)の表などで使用する場合、不適切だと
感じられるのですが、どうなのでしょうか?
0290nobodyさん2006/11/10(金) 18:32:28ID:???
>>289
そもそも最初のサンプルが悪い。
コードの途中でecho使うこと自体が不適切。
0291nobodyさん2006/11/10(金) 18:42:07ID:???
>>289
どういうこと?
別にテーブルの中でforeach使えば?
0292nobodyさん2006/11/10(金) 18:46:42ID:???
そういう構成なのか
なら $var[$key] = (empty($_REQUEST[$key]) ? "$key空" : $...; とでも
0293nobodyさん2006/11/10(金) 19:06:10ID:???
>>291
テーブル表示ループの中でデータのチェックやってんだよ。
典型的なコードとデザインが分離できてない素人設計。
02942782006/11/10(金) 19:17:03ID:???
すみません、とりあえず↓しました。
<table border="1">
<?
$param_list = array($name,$age,$sex,$address,$comment); //パラメータ名の一覧
foreach($param_list as $param) {
if($param == ""){
echo"<td>";
echo"$paramが空です";
echo"</td>";
}else{
echo"<td>";
echo $param;
echo"</td>";
}}
?>
</table>

ただこの場合、フォームから受け取ったarrayの値が空の場合は表示されなくなります。
素人設計ですが、向上心を持ってやっていきますので、再度アドバイスお願いします。
0295nobodyさん2006/11/10(金) 19:31:32ID:???
じゃあアドバイス。
まず表示部分でそんなチェックすんな。
事前にチェックを済ませて結果を変数に格納し
自由なレイアウトで表示できるようにしろ。
0296nobodyさん2006/11/10(金) 20:15:25ID:???
>>294
> if($param == ""){
$paramは必ず中身がないんだから
> echo"$paramが空です";
$paramを表示できるわけないじゃん。

>>280でパラメータ「名」の一覧を使えって言ってるのに
なんでデータ値そのものをリスト化しようとしたりするの?

あと$nameとか$ageとか、ひょっとしてregister_globalsをONにしてんのか?
$_GETか$_POSTか$_REQUEST使えって。
0297nobodyさん2006/11/10(金) 20:15:56ID:???
>>294
ヒント:
・連想配列
・TRは?
0298nobodyさん2006/11/11(土) 12:54:56ID:mWra3uS0
頑丈なロック機能を求めていたらパラレルロックって言葉にたどり着いたのですが
どういうふうに組むのでしょうか?
0299nobodyさん2006/11/11(土) 13:48:21ID:???
>>298
パラレルロックってこれ?>ttp://sajiro.net/hpa/
これだとしたらこの作者が自分のプログラムに名付けた勝手な造語じゃない?
作り方は考えた本人に聞けばいいよ。
個人のオリジナルロジックなんて知らんがな。
03002982006/11/11(土) 13:58:29ID:mWra3uS0
作者に聞くのが一番ですよね、でも自分が作者だったら教いちいちえたくないかもしれない(笑)
壊れにくいロックを作ってどんな仕組みでしょうか、奥が深いですね。
たとえばググルとよくみかける二重ロックはどうなんでしょうか?
ファイルをロックする前に、ロックファイルを別に用意して、
そのロックファイルが存在してたら別の処理にさせるという仕組みでした。
0301nobodyさん2006/11/11(土) 14:04:13ID:???
壊れ「にくい」ロックなんてナンセンスなものどうすんだよ
03022982006/11/11(土) 14:12:22ID:mWra3uS0
こだわる必要はないですかね?
fcloseだけで十分でしょうか?
0303nobodyさん2006/11/11(土) 14:13:06ID:???
同時アクセスや、途中での切断や移動などを考えると、ロックってなにげに
難しい。
アクセスが多いサイトほど、いろいろ起きるし。
0304nobodyさん2006/11/11(土) 14:24:57ID:???
>>300
微妙に意味不明 >二重ロック
それって単なるロックファイル使ったプロセスロックじゃないの?
>>302
十分なわけないじゃん。
「壊れにくい」じゃ意味ないから「壊れない」ロックを使えってことじゃ?
強力なロック機構が欲しければRDBMS使うのが1番かと思うけど。
>>303
RDBMS使わないにしても、ロックディレクトリを使ったプロセスロックで
壊れた試しって俺は無いんだけど。
途中での切断・移動って一定時間過ぎたロックを強制削除、じゃダメなのか?

どっちかというと「壊れない」かつ「アクセスを漏らさず処理できる」が難しい。
単純なロックだとアクセス過多になると大量のタイムアウトを出してしまって
アクセスカウンターとかは本来の数を記録できなくなる。
そういう意味で、キューに溜めたクエリーを順次処理するRDBMSが1番。
まぁ、これも待ち受けの最大数があるんでそれ超えるとダメだけど、
そこは色々とチューニングでカバーできるし。
0305nobodyさん2006/11/11(土) 14:59:07ID:???
flockしとけば毎秒2万回でも壊れない。
でも書き込んでる途中で電源が切れると壊れる。
MySQLのマニュアルにも不意に電源が切れた場合、
壊れる可能性があることは明記されている。
0306nobodyさん2006/11/11(土) 15:08:40ID:???
猫とおかんには適わないな
0307nobodyさん2006/11/11(土) 15:18:25ID:???
実際にあるファイルへの毎秒何万回ってアクセスさせて
ロックの頑丈さをためすコードってないの?
0308nobodyさん2006/11/11(土) 15:24:28ID:???
>>307
並行で走らせたプロセスで同時アクセスさせないといけないから
単なるコードでは難しいよ。WindowsとUNIXとでやり方変わるし。
ApacheBenchとか使ってアクセスかけた方が手っ取り早い。

でもロックの頑丈さを確認するだけなら、ロックの判定やON/OFF処理に
片っ端からsleep()入れてって、アトミックじゃない処理の部分を
間隔広げてやるだけで簡単にテストできるよ。
0309nobodyさん2006/11/11(土) 15:41:13ID:???
>>303
>途中での切断や移動などを考えると
http://www.php.net/manual/ja/function.ignore-user-abort.php
考えずにすみますよ。
0310nobodyさん2006/11/11(土) 15:51:18ID:UxXI6HSf
メールが送信できたかどうかを確認するためにReturn-Pathを設定したいのですが、
mb_send_mailの第5引数が設定できません。

環境はレン鯖でPHP4.4.4でSafeModeがONです。

何か良い方法ありましたら宜しくお願いします。
0311nobodyさん2006/11/11(土) 16:04:19ID:U7uBumak
配列の要素を標準出力する関数ってなんでしたっけ??
0312nobodyさん2006/11/11(土) 16:08:00ID:???
Sleepは検証にならないよ
やんわり動作してるアプリではアルゴリズムが全て
0313nobodyさん2006/11/11(土) 16:10:17ID:???
var_dump,print_r
0314nobodyさん2006/11/11(土) 16:14:41ID:???
>>313
あざーす☆
0315nobodyさん2006/11/11(土) 16:23:39ID:???
>>312
sleep入れて待ってる間に別窓からアクセスしてやればいいんじゃないの?
03163102006/11/11(土) 16:27:02ID:UxXI6HSf
エラー内容
mb_send_mail() [function.mb-send-mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE

PHPバージョンUPやSafeModeの設定変更はレン鯖で無理なのですが、代替案はありますでしょうか?
0317nobodyさん2006/11/11(土) 16:45:08ID:???
>>316
sendmail使わないでPEARでSMTPでもしゃべらせれば?
0318nobodyさん2006/11/11(土) 16:55:41ID:???
おまえらなんでボランティアで回答できるの?
0319nobodyさん2006/11/11(土) 16:56:46ID:???
回答が楽しいから。
03203102006/11/11(土) 17:30:37ID:UxXI6HSf
>>317
ありがとうございます。PEAR :: Mail_mimeDecode Mail_Mimeってのを調べてみます。

またはCGIとして動作させるか、Perlでsendmail使う方法などになりますかね・・・
0321nobodyさん2006/11/11(土) 17:44:36ID:???
> flockしとけば毎秒2万回でも壊れない。

毎秒二万回って凄いなあ。目がくらむ
0322nobodyさん2006/11/11(土) 17:52:33ID:???
CSV(test.csv)のデータからTableに整形して出力させたいのですがちょっと教えてください。
 1991,1,タイトル1,サブタイトル1
 1991,2,タイトル2,サブタイトル2
 1991,3,タイトル3,サブタイトル3
 1992,3,タイトルA,サブタイトルA
 1992,5,タイトルB,サブタイトルB
 1992,7,タイトルC,サブタイトルC
 1993,10,タイトル5,サブタイトル1

とあるデータをTable整形して出力させたいので、↓にしたのですが
<table border="1">
<?php
$fp = fopen("test.csv", "r");
while ($data = fgetcsv($fp, 10000)) {
print "<tr>";
foreach ($data as $d) {
print "<td>$d</td>";
}
print "</tr>\n";
}
?>
</table>
これを次のように、同じ年のところはrowspanでつなげて出力したいのですがどうやったらいけますでしょうか?
<tr><td rowspan="3">1991</td><td>1</td><td>タイトル1</td><td>サブタイトル1</td></tr>
<tr><td>2</td><td>タイトル2</td><td>サブタイトル2</td></tr>
<tr><td>3</td><td>タイトル3</td><td>サブタイトル3</td></tr>
<tr><td rowspan="3">1992</td><td>3</td><td>タイトルA</td><td>サブタイトルA</td></tr>
<tr><td>5</td><td>タイトルB</td><td>サブタイトルB</td></tr>
<tr><td>7</td><td>タイトルC</td><td>サブタイトルC</td></tr>
<tr><td>1993</td><td>10</td><td>タイトル5</td><td>サブタイトル1</td></tr>

0323nobodyさん2006/11/11(土) 18:16:06ID:???
メソッドの中にメソッドって、
変数のスコープはどうなるんでしょうか?

参考になるような記事などありますか?
0324nobodyさん2006/11/11(土) 18:20:19ID:???
>>322
尻から出力すれば
0325nobodyさん2006/11/11(土) 18:24:42ID:mWra3uS0
大規模サイトでカウンター動かすときにflockだけで漏れなく動かせるんですかね?
0326nobodyさん2006/11/11(土) 18:24:44ID:???
>>322
次に別の年が出てくるまで出力を変数にバッファリングしといて、
連ケツ不要ならそのまま出力、必要ならRowspan出力してから
バッファを持ってくる、とか。
0327nobodyさん2006/11/11(土) 18:25:22ID:???
>>325
排他制御スレでやってくれ
0328nobodyさん2006/11/11(土) 18:35:03ID:???
>>323
普通にローカルになるけど、そんなオブジェクト論理的にありえなくね?
一時期廃止されてたよね関数の入れ子
0329nobodyさん2006/11/11(土) 18:44:17ID:???
>>328
ありがとうございます。
まずいんですか・・・
0330nobodyさん2006/11/11(土) 18:49:13ID:???
ネストでけるって初めて知ったわ
0331nobodyさん2006/11/11(土) 19:58:37ID:???
htmlタグしか知らなかった俺がphp勉強してから2週間
最初はこのスレの質問の意味さえ全くわからなかったが、今では少しは理解できるようになった

あと三ヶ月まじめに勉強して模範的回答できるようになるから、おまいら待ってな
0332nobodyさん2006/11/11(土) 20:38:49ID:???
>>331
下らねぇ質問はここに書き込みやがれ専属の回答スペシャリストめざせ
合格率は0.3%
■ このスレッドは過去ログ倉庫に格納されています