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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/06/26(火) 03:03:40ID:ox2uyHLd
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 45 (※実質48)
http://pc11.2ch.net/test/read.cgi/php/1180181033/

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

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0402nobodyさん2007/07/02(月) 14:36:54ID:Oa7ZLlfR
>>401
よく見ると打ちミスしていました。
すみません、気づきませんでした。
0403nobodyさん2007/07/02(月) 14:48:38ID:???
こうすれば?

function get_ary( $idx ){
  $array = array('hoge1'=>"ホゲ1",'hoge2'=>"ホゲ2",'hoge3'=>"ホゲ3");
  if( $idx != null ){
    return $array[$idx];
  }else{
    return $array;
  }
}

// 配列くれ
$array = get_ary( null );
// 値くれ
$test = get_ary( 'hoge2' );
0404nobodyさん2007/07/02(月) 14:49:56ID:Oa7ZLlfR
>>403
ありがとうございます。
関数の方を変えてしまえば良いのですね。
解決できましたー。
0405nobodyさん2007/07/02(月) 14:53:15ID:???
>>402
うちみすかよorz
なら
function get_ary($key=""){
if($key==""){
return false;
}
$array = array('hoge1'=>"ホゲ1",'hoge2'=>"ホゲ2",'hoge3'=>"ホゲ3");
return array($key=>$array[$key]);
}
でどうだ
0406nobodyさん2007/07/02(月) 14:54:49ID:???
でおくれたorz
0407nobodyさん2007/07/02(月) 15:41:37ID:???
>>398
どっちに書こうか迷ったんですけどね。
JavaScriptはただダイアログだしてるだけだからこっちのがいいかなっておもったんだけど
やはりダイアログでの処理は向こうで聞くべきでしたか。失礼しました。
乗りかかった船でsubmitを記述を教えてください><
0408nobodyさん2007/07/02(月) 15:45:01ID:???
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を
submitを記述を


はいはい
0409nobodyさん2007/07/02(月) 15:47:56ID:???
暇だから誰か質問くれー
0410nobodyさん2007/07/02(月) 15:58:58ID:mwwSeVGN
>>409
PDOとmysqliってどっちがいいですか?
0411nobodyさん2007/07/02(月) 16:11:18ID:???
>>408
ここって定期的にお前みたいな奴が沸くな。
お前ひょっとしてずっと張り付いてそうする隙をみてんの?
キメエ
0412nobodyさん2007/07/02(月) 16:13:52ID:???
Shift_JISで一旦作ったプログラムをUTF-8に置き換えをしています。
ところがある一つのファイルだけ置き換えができない現象が発生。。
そのファイルはHTMLのヘッダとフッタを書き出すインクルード用のファイルなんですけど
PHPとHTMLが混ざり合っているとUTFに変換はできないのでしょうか??
ちなみにEUCには問題なくできました。

以下そのファイルのソース。
頭のPHPの部分を消すと下の方にPHPスクリプトがあっても正常に置換できます。

<?php

function HEADER_HTML( )
{
echo '<?xml version="1.0" encoding="Shift_JIS"?>' . "\n";
?>
<!DOCTYPE 〜〜 以下HTML文
0413nobodyさん2007/07/02(月) 16:15:22ID:???
何で変換してるかくらい書けよ
そこが一番大事だろうが
0414nobodyさん2007/07/02(月) 16:20:07ID:???
普通のテキストエディタで変換してますです。
0415nobodyさん2007/07/02(月) 16:28:58ID:???
PHPエディタですね
0416nobodyさん2007/07/02(月) 16:31:37ID:???
手作業です。
0417nobodyさん2007/07/02(月) 16:32:25ID:???
>>414
メモ帳?
0418nobodyさん2007/07/02(月) 16:35:36ID:???
もうわざと言ってるとしか思えない
0419nobodyさん2007/07/02(月) 16:42:20ID:???
>>417
Windows標準装備のメモ帳ではなくPHPエディタというテキストエディタです。
>>416
数が少ないので一括置換ではなく仰せの通り手作業です。
>>418
原因をご存知なのでしょうか?
0420nobodyさん2007/07/02(月) 16:43:24ID:???
知っているがお前の態度が気に入らない(AA略
0421nobodyさん2007/07/02(月) 16:44:44ID:???
エディタのバグだろ。変換できないなんてありえない。
0422nobodyさん2007/07/02(月) 16:45:12ID:???
>>421
お前の頭のバグだろ
04234122007/07/02(月) 16:47:41ID:???
もういいです!他のところで聞きます!
やっぱり2ちゃんねるで聞くんじゃなかった・・・バカの集まりしかいない
0424nobodyさん2007/07/02(月) 16:49:59ID:Oa7ZLlfR
ごめ、ド忘れ質問お願いします。

function test(){

}

test("aa","bb","cc");

これで、"aa","bb","cc"の部分を配列として受け取れたと思うのですが、
それってclassだけでしょうか?
たしかfunctionでもいけたような気がするのですが。。。
良かったら方法教えてください
(ちなみにtest(array("aa","bb","cc"))を使わない方法でお願いします)
0425nobodyさん2007/07/02(月) 16:52:23ID:???
>>421
TeraPadというエディタで変換を試みたところ、
「Null文字を含むファイルです。Null文字は半角スペースへ変換しました」
と出てきました。
他のファイルではでなかったのでこれが原因のようです。
0426nobodyさん2007/07/02(月) 16:53:32ID:???
>>425
んなわけねーだろwwwwwwwww
0427nobodyさん2007/07/02(月) 16:58:50ID:???
function test( $a, $b, $c ){
  return array( $a, $b, $c );
}
0428nobodyさん2007/07/02(月) 16:58:58ID:???
>>421
先程のエディタでutf-8で新規にファイルを作成し、鯖にアップして確認をしたところ、文字化けもなおって無事ちゃんと表示されました。
普段当たり前のように使ってるツールでもバグがあるかもしれないと疑う事も重要ですね。。
0429nobodyさん2007/07/02(月) 17:00:48ID:???
php関連の技術書籍を検索するとき、PHP研究所の無関係本がやたらリストアップされる。
こういうとき、どうすればマシな検索結果になるんだ。
0430nobodyさん2007/07/02(月) 17:01:59ID:???
>>429
テンプレ読めないやつは自分で探せ
そんなことだがらマシな検索結果が出ないんだ
0431nobodyさん2007/07/02(月) 17:03:54ID:???
PHP 入門 -研究所 -新書 -文庫
0432nobodyさん2007/07/02(月) 17:15:27ID:???
>>424
http://jp.php.net/manual/ja/function.func-get-args.php
これかな
0433nobodyさん2007/07/02(月) 17:25:24ID:???
こんな記述を見つけたけど、意味が分からないので
だれかこれと等価になるやつ教えてください
$mode = ($mode) ? 'a' : 'w';

こんなの初めて見たんだが、、、
0434nobodyさん2007/07/02(月) 17:26:40ID:Oa7ZLlfR
>>432
それですそれです!
まじありがと><
0435nobodyさん2007/07/02(月) 17:28:14ID:???
>>433
それは覚えるとめっちゃ便利

$mode = ($mode) ? 'a' : 'w';

$modeがTRUEなら$modeにaを、FALSEなら$modeにwを代入


$変数 = (条件式) ? TRUEの場合$変数に格納するもの : FALSEの場合$変数に格納するもの;
0436nobodyさん2007/07/02(月) 17:29:19ID:???
>>433
http://jp.php.net/language.operators.comparison#language.operators.comparison.ternary
0437nobodyさん2007/07/02(月) 17:38:33ID:???
>>435-436
うわこれいいな。ありがとう。
0438nobodyさん2007/07/02(月) 17:39:27ID:???
条件演算子は可視性が低いから使うと嫌われるよ
0439nobodyさん2007/07/02(月) 17:41:42ID:???
俺も嫌いだったけどif文のほうが可読性低い場合は多項演算子使ってる
0440nobodyさん2007/07/02(月) 17:47:43ID:???
自分で使う分には問題なくね?
04414382007/07/02(月) 17:49:57ID:???
だな
0442nobodyさん2007/07/02(月) 17:52:01ID:???
俺は仕事で使ってるけど
ぶっちゃけPHPできるのが俺しかいないから自由にやってる
フレームワークも使っていない
(ライブラリとしてよく使うものは保存しているが・・・)
0443nobodyさん2007/07/02(月) 17:55:12ID:???
三項演算子知らなかったなんてあり得ないだろw
0444nobodyさん2007/07/02(月) 17:58:47ID:???
目の前の現実を直視しなさい
04454332007/07/02(月) 18:03:05ID:???
>>438
おぼえとく。
>>443
ごめん織れなんでもない末端ブロガーなんだ。
好奇心で習得しようとしてるけど、まだまだレベル低い。
つかもっとマニュアル嫁織れ。
0446nobodyさん2007/07/02(月) 18:08:20ID:???
<?
$head = "<チラ裏>\n";
$foot = "</チラ裏>\n";

header("Content-Type: text/html; charset=utf8");
?>

<?=$head?>
PHPでExcel形式でxmlを書き出そうとしてるけどパラメータ多すぎ・・・orz
<?=$foot?>
0447nobodyさん2007/07/02(月) 18:11:23ID:4JCJ4+4N
>>438
確かに読むとき一瞬止まるな。
0448nobodyさん2007/07/02(月) 18:25:07ID:???
自分のコーディングスタイルに合わないプログラムがあると、
必死に相手を叩くゆとり。
0449nobodyさん2007/07/02(月) 18:31:59ID:???
必死に叩いているようには見えないが?
0450nobodyさん2007/07/02(月) 19:30:01ID:iLtmkhi3
じゃあ俺も>>738に500ペソ
ID出してやったぞ
0451nobodyさん2007/07/02(月) 19:34:52ID:???
>>455に2000ガバス
0452nobodyさん2007/07/02(月) 19:57:06ID:???
>>555, >>777は確変
04534292007/07/02(月) 22:39:10ID:???
>>431
ありがとう!

>>430
スマンカッタヽ(`Д´)ノ
0454nobodyさん2007/07/02(月) 22:42:00ID:k2nqp5hr
たとえばこのようなページ(https://www.wnz.waseda.jp/syllabus/epj3031.htm)の
各項目をcsvで出力するにはどのようにすればよいのでしょう?
fputcsvを使ってなんやかんやするとは思うのですが。
0455nobodyさん2007/07/02(月) 22:44:41ID:???
>>454
例えばって・・・
少しは自分で考えてみろよ
0456nobodyさん2007/07/02(月) 23:29:51ID:???
phpのソース見ていると、
$a =& hoge();
みたいなのがよくあるんですが、これリファレンスってことでおk?
0457nobodyさん2007/07/03(火) 00:50:43ID:???
うん
0458nobodyさん2007/07/03(火) 01:35:12ID:???
>>457
サンクス
日頃PHP使わないんでちょと?ってなってたよ。

ついでにPHPでいわゆるベストプラクティスの参考になるサイトない?
PEARとか以外で、щ(゚Д゚щ)カモーン!
0459nobodyさん2007/07/03(火) 01:42:00ID:???
>>458
>>1
0460nobodyさん2007/07/03(火) 02:33:45ID:???
>>454
tableなら、table で対象範囲を切り取り、 <tr>で改行(explode) した後<td>でexplodeして配列形式にする
あとはゴミを取っ払って、foreachループでCSV形式に書き出し
0461nobodyさん2007/07/03(火) 02:35:26ID:???
>>460 訂正
</tr> </td>でexplodeした方が楽だね。
0462nobodyさん2007/07/03(火) 02:46:50ID:???
>>459
ん?意味わかんね
マニュアル嫁って事?参考にならないんだけど...
それともレス番入れろって事?
レス番が必要になるような質問してないから入れてないだけだけど。
だとしたら、答えてくれなくていいよ。
まあPHPのユーザレベルってその程度なんだって思うだけだから。

違ったらゴメン。
0463nobodyさん2007/07/03(火) 02:46:59ID:???
指定ディレクトリ内のファイル一覧を名前順で取得するにはglob関数を使うのはわかってるんですが、
指定ディレクトリ内のファイル一覧を日付順で取得するにはどうしたら良いんでしょうか?
ご存知の方いらっしゃったらおしえてください。
0464nobodyさん2007/07/03(火) 02:58:21ID:???
>>462
459じゃないけど、phpのマニュアルは、他の言語と比べても、とても良くできてると思うよ。
サンプルも豊富だし。

断片的なのはマニュアルだからしょうがないけどね。
体系的になんかつくる例とかを見たいなら、なんか本買うか、ググって上から見ていけばよいと思う。
0465nobodyさん2007/07/03(火) 03:00:55ID:???
>>460
リンク先の検索結果が0件だからアレだけども
普通はデータベースからHTML出力とCSV出力に分ける。
外部から人様のデータをCSV出力したいのなら,460の言うようにHTMLから抽出する。
それともデータ構造は取得できているが、ファイル関数の使い方が分からないということなのか。

>>463
glob関数はパターンにマッチするパス名を探すだけなので
ざっとファイルシステム関数のページを見るべし。
見た感じでは更新時刻でソートして取得するのはないようなので
statやfstat,filemtimeなどを利用してあとからソートすればいいんじゃないか。
0466nobodyさん2007/07/03(火) 03:03:18ID:???
スレの雰囲気を察するのが回答の近道だと思わない?
0467nobodyさん2007/07/03(火) 09:33:47ID:???
うん
0468nobodyさん2007/07/03(火) 11:23:30ID:???
自分のコーディングスタイルに合わないプログラムはコピペで終わりにできないだろ
0469nobodyさん2007/07/03(火) 13:18:53ID:OguL7YE2
質問です。

$a[0][0] = '0-0';
$a[0][1] = '0-1';
$a[1] = '1';
$a[2][0][1] = '2-0-1';

↑のような次元のバラバラな配列があります。で、感覚として例えば

echo hoge(array(0 => 1)); //結果は 0-1
echo hoge(1); //結果は 1
echo hoge(array(2 => array(1 => 0))); //結果は 2-1-0

function hoge($key) {
global $a;
return $a[$key];
}

のように、添字に対して任意の次元の値を渡したいのですが、
どうも上手くいきません。渡された次元数で条件分岐すれば
できるのはわかっているのですが、もっとスマートな方法は
ないでしょうか?

よろしくお願いします。
04704622007/07/03(火) 13:28:56ID:???
>>464
サンクス
知りたかったのはコーディング規約もそうなんだけど、
ユーザ間で指針としているスタイルとかあるだろうって思って。
自分のメイン言語じゃないから、せめて可読性ぐらい保たないとメンテナに悪いだろw

いくつかソース読んだけどいまいち整然としてない気がして、って事で
聞いてみたんだけどね。まあもう少し色々見てみるよ。
0471nobodyさん2007/07/03(火) 13:51:52ID:???
>>469
君のfunctionを見る限りそれは質問じゃなくて丸投げだろ…

スクリプト改造依頼スレ (丸投げ) に行け
ttp://pc11.2ch.net/test/read.cgi/php/1157787046/l50
0472nobodyさん2007/07/03(火) 13:53:09ID:???
>>469
普通に$a[2][0][1]で参照するのは無理なんだよな?
function getValue(array $var,array $keys) {
foreach($keys as $i)
$var = $var[$i];
return $var;
}
echo getValue($a,array(2,0,1)); // 2-1-0
こんなことやってしまうとか…?
XML関係とかかな?
こういう変則的な事やりたい場合は理由も書いた方がいいかも。
04734692007/07/03(火) 14:16:42ID:OguL7YE2
>>472
具体的にどこで使うってのは決めてないです

提案していただいた関数の他にも、例えば渡す側が添字を'[1][2]'等の文字列で
渡して受け取り側でevalで処理するなど色々な方法があると思うのですが、
もっと原始的な操作でできないかなと思いまして。

$a[$key]や$a[$key1][$key2]ができるんだから、
$a[array($key1 => $key2)]的なことができてもいいんじゃないかなと。
0474nobodyさん2007/07/03(火) 14:35:51ID:???
>>473
PHPのは多次元配列って言うより配列の配列だから[][]でいいと思うけど…。
0475nobodyさん2007/07/03(火) 15:13:37ID:???
>>469

>>470はかまってちゃんだからスルーしなさいねw
0476nobodyさん2007/07/03(火) 15:15:07ID:gJhXmCpl
添付ファイルつきメール送信で質問なのですが

フォーム⇔確認画面(入力に戻るあり)→送信処理

修正で戻ったり、確認画面まで引っ張ったまま
アップロードデータを残すのは無理なんでしょうか?
良い書き方が思いつきません…

0477nobodyさん2007/07/03(火) 15:21:14ID:???
>>476
一度サーバーに仮であげてキャンセル対策は
一定時間以上そのままのやつをクローンかユーザーアクセスかを
トリガーに削除するしか思いつかん
0478nobodyさん2007/07/03(火) 15:37:43ID:???
>>473
関数を再帰させれば出来るでしょ。
getArrayVal ($array) {
foreach ($array as $key=>$val)
{
if(is_array($val)) {
getArrayVal($val);
} else {
}
}
}
このパターンでマッチするものを取ればいい。
つまりは>>106に対する>>109,>>110の答えと一緒なんだよ
あなたのやりたいことって。
04794692007/07/03(火) 16:01:21ID:???
>>478
>>469での質問の仕方が悪かったですね。すいません。
質問したかったのは実現のための関数の作り方ではなく、あくまで
配列の添字に対して任意の次元の値(添字)を渡せるかどうか、なのです。

PHPは「$$a」みたいな知らなければ永遠に気づかないような表現があるので、
もしかしてあるかな、と思って質問してみました。
04804692007/07/03(火) 16:04:12ID:???
ごめんなさい
やっぱり教えてgooで質問してきます。
たぶん下らないスレなのでわからない人ばっかりですよね・・・
ありがとうございました。
04814692007/07/03(火) 16:06:40ID:???
>>480
・・・。
0482nobodyさん2007/07/03(火) 16:10:06ID:???
>>480
とりあえず氏ね。
04834692007/07/03(火) 16:10:10ID:???
>>481
偽者ですか?
04844692007/07/03(火) 16:11:18ID:???
>>482
下らない質問スレということで
知識のない人でも答えられるからそういう人が集まっているスレと見ています。
教えてgooでは専門家の方やプロの方がいると思うのでそっちで聞いてみます。
0485nobodyさん2007/07/03(火) 16:27:12ID:???
もう秋田
0486nobodyさん2007/07/03(火) 16:33:03ID:???
教えてgooで回答しているのも俺たちだけどね
0487nobodyさん2007/07/03(火) 16:49:36ID:???
>>486
me too
04884692007/07/03(火) 17:01:05ID:???
じゃあ答えてみろ
0489nobodyさん2007/07/03(火) 17:10:16ID:hv6LsRuc
よく商品などの販売サイトで

「あなたのチェックした商品」

という感じで、クリックした商品が羅列されてるんですが、あればどういった仕組み
になっているのでしょうか?

0490nobodyさん2007/07/03(火) 17:11:38ID:???
>>489
セッション
0491nobodyさん2007/07/03(火) 17:22:06ID:???
>>489
シックスセンス
04924892007/07/03(火) 17:39:56ID:hv6LsRuc
ググッたらここがでてきて、なんとなくぼんやりわかったのですが、
具体的にクリックした商品をデータベース!?に収めるにはどうしたらいいのでしょうか?

以下のようなことができますか?

 セッションID<>クリックした商品ID1
 セッションID<>クリックした商品ID2
 セッションID<>クリックした商品ID3
 セッションID<>クリックした商品ID4

ウェブ上では・・

 あんたがチェックした商品

 ■商品1
 ■商品2
 ■商品3
 ■商品4



 
0493nobodyさん2007/07/03(火) 17:43:34ID:???
>>492
全然わかってねーじゃん

0494nobodyさん2007/07/03(火) 17:44:04ID:???
>>492
>具体的にクリックした商品をデータベース!?に収めるにはどうしたらいいのでしょうか?

何が言いたいのかわからん

>以下のようなことができますか?

できる
0495nobodyさん2007/07/03(火) 17:44:08ID:???
>>492
好きなレコード作って入れていけば?
04964892007/07/03(火) 17:46:09ID:hv6LsRuc
<?php
$_SESSION['shohin_id'] = 1 ;セッション変数に値を代入
$_SESSION['konyu'] = array(1,3,6); 配列もOK
?>

これのarray(1,3,6); 配列もOK  の意味がわかりません。

この数字 1、3、6 ってどこからでてきたものですか?

0497nobodyさん2007/07/03(火) 17:47:37ID:???
>>496
>この数字 1、3、6 ってどこからでてきたものですか?

お前が書いたんだろ
0498nobodyさん2007/07/03(火) 17:48:15ID:???
唖然
0499nobodyさん2007/07/03(火) 17:53:22ID:???
>>496
あんたが見てるコードと解説を書いた人に聞けばいいよ。
「配列も渡せるようですが、例として 1 3 6 を選んだ理由は何ですか」とか。
0500nobodyさん2007/07/03(火) 17:54:56ID:???
もう秋田
はい次の人どうぞ
0501nobodyさん2007/07/03(火) 17:58:12ID:???
クラス内から外部の変数呼ぶ(function内で言うところのglobal)ことってできる?
■ このスレッドは過去ログ倉庫に格納されています