1 名前:nobodyさん [2009/02/01(日) 18:10:57 ID:PdwQzQch] 質問者はまず>>1 を良く読むこと(必須!) 過去スレ、関連スレ、FAQなどは>>2-10 辺り 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。 ◆前スレ 【PHP】下らねぇ質問はID出して書き込みやがれ 78 pc11.2ch.net/test/read.cgi/php/1230026935/ ◆質問用テンプレ 【OS名】vine linux 【PHPのバージョン】php5.26 【連携ソフトウェア】mysql 【質問内容】 ◆質問する時の注意 ・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す) ・ 己の行った操作、変更などを詳しく明記すること。 ・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。 ・ 質問者として、態度をわきまえること。 ・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。 (PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。) ◆質問後の注意 ・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。 ・解決しなくても回答をもらった場合はお礼を言うこと。 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。) ◆回答者への注意 ・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
380 名前:nobodyさん mailto:sage [2009/02/08(日) 02:43:12 ID:???] >>371 eval() や include() を使って評価する function replace($template, array $params = array()) { extract($params); return eval('return "' . preg_replace('/"/', '\\\\"', $template) . '";'); } echo replace('私は{$name}です。', array('name' => '371'));
381 名前:nobodyさん [2009/02/08(日) 11:20:52 ID:DarObAIw] 定義したhello関数を$testに格納して、呼び出したいところでecho $testを書いたのですが $test = hello();の時点で出力されてしまいます hello関数を$testに格納して、自分が呼び出したいところで使うにはどうしたらよろしいでしょうか? function hello() { return "<p>こんにちは</p>"; } $test = hello(); #このあたりに別の処理をおいてます echo $test;
382 名前:nobodyさん mailto:sage [2009/02/08(日) 11:23:54 ID:???] >>381 それはない。 helloでreturnしないでechoしてんじゃないの?
383 名前:nobodyさん mailto:sage [2009/02/08(日) 12:37:30 ID:???] >>381 もしくは勘違い。html見てみるがよろし
384 名前:nobodyさん [2009/02/08(日) 12:43:55 ID:WhrhZbLr] 秒数を、 "時間:分数:秒数" のフォーマットにしたいのですが、そういう関数があれば教えて下さい
385 名前:nobodyさん mailto:sage [2009/02/08(日) 12:50:59 ID:???] >>382 どういうこと?381のreturnをechoにすると$test=hello();が実行されるの? echo $testしないと出力されるわけないじゃん
386 名前:nobodyさん mailto:sage [2009/02/08(日) 12:51:42 ID:???] >>384 string date ( string $format [, int $timestamp ] )
387 名前:nobodyさん mailto:sage [2009/02/08(日) 12:56:50 ID:???] >>385 >>381 のソースならhello()の段階で出力されたりしない。 出力されてるとしたらfunction hello のコードか、 もしくは別の場所が間違ってるという風にエスパーした
388 名前:nobodyさん mailto:sage [2009/02/08(日) 15:04:52 ID:???] >>385 お前は何を言ってんだ?
389 名前:nobodyさん mailto:sage [2009/02/08(日) 15:26:32 ID:???] function hello(){echo"こんにちは"} #ここまではなにも表示されない $hensu=hello(); #ここで表示される echo $hensu; #ここも表示される あれ?なんで? 変数に関数を格納しただけで関数って実行されたっけ?
390 名前:nobodyさん mailto:sage [2009/02/08(日) 15:29:48 ID:???] >>389 >>1
391 名前:nobodyさん [2009/02/08(日) 15:46:17 ID:mhFiPpin] >>389 別の言語を知っているのをひけらかすために下らない質問をするっていうのも このスレの趣旨にはあってるのかもな。 まさに、下らない
392 名前:nobodyさん mailto:sage [2009/02/08(日) 16:14:38 ID:???] cなら格納しただけで実行はされないのにPHPってクソだな
393 名前:nobodyさん mailto:sage [2009/02/08(日) 16:23:49 ID:???] w
394 名前:nobodyさん mailto:sage [2009/02/08(日) 16:24:30 ID:???] echoしてくれたほうがいい
395 名前:nobodyさん mailto:sage [2009/02/08(日) 16:26:32 ID:???] 普通関数内でechoしても関数を実行されない限りは動かないはずなのにな 関数を変数に格納するだけで動作するとか変な仕様だな
396 名前:nobodyさん mailto:sage [2009/02/08(日) 16:30:31 ID:???] 配列の最後の添字を得たいのですが、簡単な方法ありますでしょうか? 自分なりに考えてみたのですが、回りくどいような気がするので $i=1; foreach($icarr as $key => $val) { $hai[$i]=$key; $i++; } echo $hai[$i-1];
397 名前:nobodyさん mailto:sage [2009/02/08(日) 16:32:14 ID:???] てか、変数にしなくても、 hello(); だけで表示されるくね
398 名前:nobodyさん mailto:sage [2009/02/08(日) 16:33:12 ID:???] >>395 $x = hello(); PHPではこれは実行なんだよ。 $x = function hello() {} なら、格納だが。
399 名前:nobodyさん mailto:sage [2009/02/08(日) 16:42:39 ID:???] Cでカスだったやつは、PHPに来てもカスだな
400 名前:nobodyさん [2009/02/08(日) 16:47:42 ID:F6PnIVyb] 変数$a,$b〜$zまであって、 とりあえず、初期値を$a = 0,$b=0,・・・$z=0 にしたいんですけど できる限りすっきり書く方法ってありますか? あれば掲示おねがいします
401 名前:nobodyさん mailto:sage [2009/02/08(日) 16:59:07 ID:???] PHPの言語は何の言語で作られてますか?
402 名前:nobodyさん mailto:sage [2009/02/08(日) 17:03:37 ID:???] 愛
403 名前:nobodyさん mailto:sage [2009/02/08(日) 17:05:00 ID:???] >>401 phpの72%は勢いで出来ています phpの17%は波動で出来ています phpの6%は言葉で出来ています phpの3%は理論で出来ています phpの2%は成功の鍵で出来ています
404 名前:nobodyさん mailto:sage [2009/02/08(日) 17:05:45 ID:???] [php] 攻撃:89 素早さ:21 防御:77 命中:86 運:45 HP:139 [c] 攻撃:36 素早さ:29 防御:59 命中:13 運:95 HP:223 php vs c 戦闘開始!! [c]の攻撃 MISS [php]は攻撃を回避した。 [php]の攻撃 HIT [c]は120のダメージを受けた。 [c]の攻撃 HIT [php]は1のダメージを受けた。 [php]の攻撃 HIT [c]は92のダメージを受けた。 [c]の攻撃 MISS [php]は攻撃を回避した。 [php]の攻撃 HIT [c]は128のダメージを受けた。 [php]が[c]を倒しました(ラウンド数:3)。
405 名前:nobodyさん mailto:sage [2009/02/08(日) 17:08:43 ID:???] >>396 end array_pop
406 名前:nobodyさん mailto:sage [2009/02/08(日) 17:17:02 ID:???] >>400 $a = $b = $c = $d = $e = $f = 0;
407 名前:nobodyさん mailto:sage [2009/02/08(日) 17:41:19 ID:???] >>400 無理やりやってみた foreach (get_defined_vars() as $varName => $varValue) { if (ctype_lower($varName)) $$varName = 0; } というか初めから $var['a'] $var['b'] $var['c'] という風に 連想配列でやった方がいいんじゃないの?
408 名前:nobodyさん mailto:sage [2009/02/08(日) 18:37:59 ID:???] >395 クロージャを格納するのと関数の実行結果を格納するのは別の操作だ。JavaScriptで言うと var hoge = hogeFunc(); var hoge = hogeFunc; Cで言えば、関数ポインタを渡すのと関数の戻り値を渡す事の違い。 >400 for($loop=ord('a'); $loop <= ord('z'); $loop++){ ${chr($loop)} = 0; } うっかりループ変数に$iを使っちまったぜ…9番目の変数が$iなのを忘れていた。 まとめて初期化したいという事は、何らかのかかわりを持った変数群だろうから、配列にしておく事をお勧めする。 変数名に意味を持たせるのは地獄の始まりだしな。そもそも、この処理(可変変数)は禁呪に近い。地獄への直行便だ。 $aが実は「アルファベットaの登場頻度」とかだったとしても、俺なら連想配列を使う。 変数をその後どう使うつもりか、ちょっとだけ話してみ?誰かがもう少しマシなデータ構造を考えてくれると思うぞ。
409 名前:408 mailto:sage [2009/02/08(日) 18:45:37 ID:???] ちなみに for($loop='a'; $loop <= 'z'; $loop++){ $$loop = 0; } も動く。どうせ黒魔術ならこれでもいいかもな。
410 名前:nobodyさん mailto:sage [2009/02/08(日) 19:01:39 ID:???] $$loopの$が2つつくのってどういう意味ですか?
411 名前:nobodyさん mailto:sage [2009/02/08(日) 19:43:49 ID:???] >408でも触れたが、可変変数(Variable variables)という名前からしてもう頭のおかしい言語仕様。 ttp://jp2.php.net/manual/ja/language.variables.variable.php こいつを使いたくなる時の99%は、設計が悪い時。残りの1%はわざと分かりにくいコードを書こうとする時。 パッと見>409のコードはスッキリしてるだろ? この後のコードが死ぬほどカオスになる。デバッグの難易度も跳ね上がるし、コード解析の類も殆ど効かなくなる。 自分で書いておいてなんだが、こんなコードを書く奴がチームにいたら何とかして転属させる。
412 名前:nobodyさん mailto:sage [2009/02/08(日) 19:46:02 ID:???] じゃそんなの教えんなよ
413 名前:nobodyさん mailto:sage [2009/02/08(日) 20:05:59 ID:???] 仕様で語りたいんなら、言語仕様の闘技場でもいってくれ。 いくらブログを呼んでもらえないからって、こんなところで、下らない持論を ひけらかさなくてもいいだろ。 みんなわかってて使ってるんだ。 たとえば、JavaScriptだって、関数言語ライクにかっこいいコーディングもできれば グローバル使いまくりで糞なプログラムだって書ける。 要は使う奴のセンスの問題。気に入らない言語仕様があるなら使わなきゃいいだけ
414 名前:nobodyさん mailto:sage [2009/02/08(日) 20:47:00 ID:???] PHPがどうこうという問題ではなく、可変変数の類がタブー視されていない言語なんぞそうそう存在しないと思うが。 (その割に、類似機能を実装してる言語は多いけどな) ActiveRecordパターンとかSimpleXMLみたいな動的に構造が変わるものを実装しようとした場合には便利だが、基本的に悪手だろ。 「$a - $zまでを初期化したい」なんていうのは、>407-408で既出の通り、そもそも質問が(質問が前提としているデータ構造が)おかしい。
415 名前:nobodyさん mailto:sage [2009/02/08(日) 20:47:53 ID:???] わからないから使ったことない俺の立場も考えて教えてくれよ!
416 名前:nobodyさん mailto:sage [2009/02/08(日) 21:15:49 ID:???] いらっしゃいませ いっぱい echoしていってね!
417 名前:nobodyさん mailto:sage [2009/02/08(日) 21:24:27 ID:???] 初心者だからってバカにするなよ!!!!!
418 名前:396 [2009/02/08(日) 23:48:11 ID:lPL/MCOf] >>405 両方とも要素が出てしまって、添字が出てきません
419 名前:nobodyさん mailto:sage [2009/02/08(日) 23:51:15 ID:???] array_keysかければいいじゃん
420 名前:nobodyさん mailto:sage [2009/02/08(日) 23:51:19 ID:???] count
421 名前:nobodyさん mailto:sage [2009/02/08(日) 23:59:29 ID:???] $array = array('yahoo' => 'www.yahoo.com', '2ch' => 'www.2ch.net', 'google' => 'www.google.com'); $keys = array_keys($array); echo $keys[count($keys)-1]; // 'google'
422 名前:nobodyさん [2009/02/09(月) 01:00:26 ID:3WrJzpwr] $aに含まれる連想配列の数は不定です。 この$aのキーを元に、2つの配列に分けたいと思います キーの先頭文字aとbを元に2つの配列に分けたいのですが どなたかご教示お願いいたします $a['a1']=1; $a['b201']=2; $a['b31']=2; $a['a23']=0; $a['b1']=2; $a['a300']=1; $a['b42']=1; $a['b3']=2;
423 名前:nobodyさん [2009/02/09(月) 01:06:58 ID:FohDFk4k] 【OS名】Windows XP Pro x64 【PHPのバージョン】php5.2.6 【連携ソフトウェア】EXCEL 【質問内容】 PHPからEXCELファイルをCOM経由で操作したいのですが、 何か良いマニュアルもしくはサンプルはありませんでしょうか?
424 名前:nobodyさん mailto:sage [2009/02/09(月) 02:35:15 ID:???] >>422 PHPのバージョンぐらいは提示しといた方がいいぞ 比較的新しいバージョンなら $aa = array(); $ab = array(); foreach ($a as $key => $val) { if ($key[0] = 'a') { $aa[$key] = $val; } else if ($key[0] = 'b') { $ab[$key] = $val; } else { } }
425 名前:nobodyさん mailto:sage [2009/02/09(月) 02:37:33 ID:???] >>423 php excelで検索すれば、いっぱい引っかかるから、良さそうなの適当につまんでみて
426 名前:nobodyさん [2009/02/09(月) 03:00:22 ID:1doMXVgO] セキュリティのことでお聞きしたいんですが (板違いならすいません test.php?num=○○ というのがあって ○○にSQL文をうたれる場合があるんですよね? ○○は整数なので、is_numericを使えば完璧ですか?
427 名前:nobodyさん mailto:sage [2009/02/09(月) 03:12:12 ID:???] ctype_digit()のがベター
428 名前:nobodyさん mailto:sage [2009/02/09(月) 03:18:07 ID:???] いや適切にエスケープすりゃ整数だの数値だのどうのと考える必要ないだろ
429 名前:nobodyさん mailto:sage [2009/02/09(月) 11:06:59 ID:???] >>424 なんかスマートじゃないなあ
430 名前:nobodyさん mailto:sage [2009/02/09(月) 11:14:24 ID:???] じゃどんなのがスマートなんだ
431 名前:nobodyさん mailto:sage [2009/02/09(月) 11:21:54 ID:???] php5ならarray_intersect_ukey使えばおk
432 名前:nobodyさん mailto:sage [2009/02/09(月) 11:27:14 ID:???] >>424 新しいバージョンとか明示しといて新しい技術が使われてない件
433 名前:nobodyさん [2009/02/09(月) 11:53:59 ID:3Lbj9zQQ] 配列のキーと要素をarray_walkでくっつけたいのですが うまく動作しません どなたかアドバイスお願いします $ary=array("a"=>"001","b"=>"002","c"=>"003); function test($value,$key) { $s= $key.$value; } $a = array_walk($ary,"test")); echo $a;
434 名前:nobodyさん [2009/02/09(月) 12:05:26 ID:zB3vQynG] phpで簡単に日付計算してくれる関数ないの? mysqlみたいにintervalみたいなやつあったら便利なのに
435 名前:nobodyさん mailto:sage [2009/02/09(月) 12:12:51 ID:???] shitsumonnha gutaitekini
436 名前:nobodyさん mailto:sage [2009/02/09(月) 12:13:53 ID:???] >>433 return >>434 あるじゃん
437 名前:nobodyさん mailto:sage [2009/02/09(月) 12:17:00 ID:???] >>433 すまんreturnはarray_mapだった array_walkは第一引数を参照で指定みたいね
438 名前:nobodyさん [2009/02/09(月) 12:36:49 ID:zB3vQynG] >>436 strtotimeでできたわ dクス
439 名前:nobodyさん [2009/02/09(月) 12:55:30 ID:3Lbj9zQQ] ありがとうございます 値を引き継げないのでarray_walkは諦めます
440 名前:nobodyさん mailto:sage [2009/02/09(月) 13:05:40 ID:???] >>439 ヒント:要素に要素とキーをくっ付けて入れて戻して連結
441 名前:nobodyさん mailto:sage [2009/02/09(月) 13:09:54 ID:???] >>440 久々に、本物のヒントを見た。
442 名前:nobodyさん mailto:sage [2009/02/09(月) 13:16:13 ID:???] >>440-441 同一人物乙
443 名前:nobodyさん [2009/02/09(月) 16:48:36 ID:7eq/MQEm] mb_substitute_character()で何も指定しない状態で echoすると設定されているものが表示されるとマニュアルに あるのですが、実際にechoすると63という数字が 表示され、これがいったい何を意味してるのか分りません 63の意味と他にはどんなものが用意されているのか 知りたいので関連したページでも結構です教えてください
444 名前:nobodyさん [2009/02/09(月) 16:51:17 ID:9eTCLU3p] 分からんから教えて hoge.incというファイルに<?php ?> でくくらないfunctionを入れて別のファイルから呼び出して evalでPHPにして使いたいんだけど includeと組み合わせてできないの? eval(include("hoge.inc"));ってやってみたけどそのままソースが表示された。 <?php ?>でくくればいいだけの話なんだけど、evalも使ってみたいと思って。 外部ファイルと組み合わせる時、evalってどうやって使えばいいの?教えてYO!
445 名前:nobodyさん mailto:sage [2009/02/09(月) 16:59:56 ID:???] >>443 無効な場合にcが出るということでは?よく分かんないけど >>444 pc11.2ch.net/test/read.cgi/php/1158647441/
446 名前:nobodyさん mailto:sage [2009/02/09(月) 17:02:55 ID:???] >>444 returnして変数にいれるか、obで取得
447 名前:nobodyさん mailto:sage [2009/02/09(月) 17:09:51 ID:???] file_get_contentsで十分だろ
448 名前:nobodyさん mailto:sage [2009/02/09(月) 17:14:04 ID:???] >>446 そんなの嫌。もっと簡単な方法教えれ。
449 名前:nobodyさん [2009/02/09(月) 17:17:12 ID:9eTCLU3p] >>447 お前天才。一発解決だわ。 あとさー、file_get_contentsでwikipediaのソースを取得したいんだけど なぜか403になるんだよ。なんで? 他のサイトはソースが取得できるのにwikipediaだけは無理なの。 なんで?
450 名前:nobodyさん mailto:sage [2009/02/09(月) 17:32:15 ID:???] >>444 evalなんて使うな!シネカス
451 名前:nobodyさん mailto:sage [2009/02/09(月) 17:38:31 ID:???] >>450 damare kono chimpo yarou