元スレ【PHP】ID出さなくても質問OKなスレ【初心者歓迎】
php覧 / PC版 /みんなの評価 : ○
401 = :
ループでキーに数値以外が含まれてるかどうか判定するだけじゃん
プログラマーならすぐ思いつくと思うが・・
402 = :
>>400
多分、PHPには「単純な配列」って無いんじゃないかな。
http://php.morva.net/manual/ja/language.types.array.php
>PHP の配列は、実際には順番付けられたマップです。マップは型の一種で、 値をキーに関連付けます。
403 = :
>>402
だからキーが数値のみで
構成されているかどうかを
調べたい、ってことだろ?
専用関数あるだろ。
404 = :
>>403
それは質問者が考えればいいことだし。
ただ、「普通の配列」ってのは無いってだけで。
歯抜けな配列も作れるし、キー値だけでチェックするのもかなりびみょー。
ところで配列のキー値がすべて整数かチェックする専用関数って何?
ざっと見た感じ見当たらないんだけど。
http://php.morva.net/manual/ja/book.array.php
405 = :
>>401
それはもちろん思いついたのですが、
もう少しスマートな方法はないかと思いまして・・・
return array_keys($array) !== range(0, count($array) - 1);
こんな方法があるのを知ったのですが、
これだと、
$array(
0 => 'hoge',
2 => 'fuga',
3 => 'piyo'
);
のように、配列が歯抜けになっている場合に一致しなくなりますし・・・
>>403
専用の関数とは何のことでしょうか??
406 = :
きみの言うスマートな方法ってのは明確で解かりやすいというより
制御構造使わないような方法のこと?
407 = :
クラスってのがなかなか理解できません
どなたか詳しく解説してくれませんか?
408 = :
どこが分からんの?
409 = :
>>407
いいよ。
410 = :
このスレの先輩方はhtmlは得意でしょうか?
411 = :
おうよ
412 = :
ほんとかよwwwwwwwwwwwwwwwwwww
413 = :
僕は一応html4系とxhtml1.0と1.1で、しかもstrictとtなんちゃらで使えるタグと属性を口頭で全部言えるぐらいの知識しか持ちません
xhtml1.0 strictで使えるタグの数もパッと言えるぐらいの知識です
414 = :
じゃ言ってみてくれ
415 = :
>>414
76個
417 = :
はよ全部言えよ
418 = :
なんだよ質問じゃなくただの知ったかかよ
419 = :
4択問題をcsvに記録していくスクリプトを作っています。
csvに下のように書き込まれるようにしています。
名前,答え,答え,答え,答え,答え,(改行)
名前,答え,答え,答え,答え,答え,(改行)
名前,答え,答え,答え,答え,答え,(改行)
複数の人が同時に行うと、下のようにデータが混ざってしまいますよね?
Aさん,答え(Aさん),[Bさん参入で改行]
Bさん,答え(Bさん),答え(Bさん),答え(Aさん),答え(Aさん),答え(Bさん),
実際に試してみるというのがやりにくい問題なので、何を勉強しないといけないか
教えていただけますか。
そもそもCSVでこの手の記録をやろろうとするのはどうなんでしょうか。
421 = :
>>419
コード書いてもらわないと的を得た回答はでないよ
422 = :
以前$_SERVER["DOCUMENT_ROOT"]のことでググったときに
DOCUMENT_ROOTの値が実際の値とは違う場合がある事例を見ました。
とすると<base>タグやスクリプト内で絶対パスを作るときにこの変数を使うのは
危険な可能性もあるんでしょうか。
$rootPath = $_SERVER["DOCUMENT_ROOT"];
$a = $rootPath."/sample";
<base href="{$rootPath}">
また$_SERVER["DOCUMENT_ROOT"]以外にルートパス(?)を取得する方法はありますか?
425 = :
DOCUMENT_ROOTって、
public_htmlとか、
htdocとかのこと?
426 = :
>>425
知らない奴に聞いてねえよ
ロムってろks野郎
427 = :
概略はこんな感じです。最初のifで名前の処理をした後は、最初の問題提示が
一番下のelseから始まり、まず二つ目のifに入り、その後は最初のelseの中をぐるぐるやって、
問題がなくなったら終了するような仕様です。今のところflockはあてずっぽうに入っている状態です。
15問あったとしてAさんがそれを終えるまでのすべてにろっくをかけておかないといけないのでしょうか。
複数の人が同時に問題を解けるようにしたいのですが。
if($_POST["id"] =="999"){
$file_name = "record.txt";
$file = fopen($file_name, "a+") or die("OPENエラー $file_name");
flock($file, LOCK_EX);
中略(解答者の名前の書き込み)
fputs($file, $time);
flock($file, LOCK_UN);
fclose($file);
}
if (is_numeric(@$_POST['answer']) || $_POST['id'] == "2"){
$file = fopen($file_name, "a") or die("OPENエラー $file_name");
flock($file, LOCK_EX);
if(intval(@$_POST['k']) == "0")
{
中略(正誤判定)
fputs($file, $string);
flock($file, LOCK_UN);
fclose($file);
中略(問題提示とPOST)
}
428 = :
スクリプト後半です。長いので細かいところは省略してありますが、
本物は期待通り動くことは動きます。
**********
else {
$file_name = "record.txt";
$file = fopen($file_name, "a") or die("OPENエラー $file_name");
flock($file, LOCK_EX);
中略(正誤判定)
fputs($file, $string);
flock($file, LOCK_UN);
fclose($file);
//////全問終了
if($question[0] == ""){
echo "<br><br>終了です!";
中略
$file_name = "record.txt";
$file = fopen($file_name, "a") or die("OPENエラー $file_name");
flock($file, LOCK_EX);
$string = $array.",";
$time = $time."\n";
fputs($file, $string);
flock($file, LOCK_UN);//同時アクセスを防ぐロックを解除
fclose($file);
}
else{
中略(問題提示とPOST)
}
} }
else {
$fname = "voc.csv";
$data = file($fname);
中略(問題提示とPOST)} }
429 = :
>>427
マジレスするとflock($file,LOCK_UN)はいらない
なぜならfcloseでファイルが閉じられるから
430 = :
>>427
> 複数の人が同時に問題を解けるようにしたいのですが。
全問終了時だけファイル操作(とロック)すればいいと思うんですよね。
431 = :
>>429
ありがとうございます。
>>430
ありがとうございます。
そうですね。最後に一気に書き込む仕様にしておけばいいですよね。
今の仕様ですと、最初のelseの中でぐるぐると出題するごとに
各問題に対する回答者の答えを一つ一つ書き込む
仕様なので(<私の理解が間違ってなければ)、おそらく複数の人が
回答すると419のようにデータ混じるのではないかと思っています。
途中の回答を回答者ごとに一時的にどこかにためておけばいいんですね。
テンポラリーファイルを回答者ごとに別々に作成して回答を一時的に格納し、
最後にひとつの記録用ファイルに書き込むというのを今考えたんですが、
これどうでしょうか、他にもっといいやり方があるでしょうか?
432 :
掲示板の親記事にコメントすると
その親記事にコメントが表示されますが
これってどういうアルゴリズムなんでしょうか?
433 = :
全てはデータ構造
データ構造が決まればそれに合わせてプログラムがコーディングされるだけ。
437 = :
$getUA = $_SERVER['HTTP_USER_AGENT'];
$f = file("DeviceDisplay.csv");
foreach ($f as $k=>$v){
list($name, $ua) = explode(',', rtrim($v));
if ($getUA == $ua) {echo "csvに記録されてました";}
}
438 = :
>>437
===
441 = :
1.ファイルがない時は作成し、ある時は追加モードでオープン。
2.ファイルが新規作成された時は、chmod 0666
という処理をしたいです。
fopen($filePath, 'a')でファイルオープンした時に、
新規作成されたかどうかが分かれば簡単にできると思うのですが、
できません。
どのようにすれば目的の処理ができるでしょうか?
444 = :
マジレスするとファイルの作成&書き込み時にfile_exisitsなどはやめた方が良い
445 = :
flockと組み合わせればfile_exisitsはアリかと
446 = :
>>444
何故に?
447 = :
>>445
chmod するしないぐらいなら、そんなに神経質にならなくても良いと思うが。
448 = :
>>446
ファイルがあるかな?
ファイルがないなー
よーしファイルをつくるぞー
ちょーーとまったーワシが先にファイルを作るでぇ~ゲヘゲヘ
よっしゃーワシが先にファイル作成完了~~大勝利~~~
、、、さーーって、さっき調べた時にファイルなかったから、作るかな,,,
作成、っと、、、ん?今、なんか、違和感を感じたが、、、、なんだったんだ???
みんなの評価 : ○
類似してるかもしれないスレッド
- 【PHP】ID出さなくても質問OKなスレ【初心者歓迎】 (1001) - [100%] - 2009/1/28 18:17
- 【PHP】ID出さんでも質問OKなスレ【初心者歓迎】2 (1001) - [86%] - 2009/11/19 20:19 ○
- 【PHP】フレームワーク CakePHP 3ホール目【本命】 (1001) - [33%] - 2008/6/19 7:19 ○
- 【PHP】フレームワークについて語るスレ12【総合】 (994) - [31%] - 2009/3/19 13:46 ○
トップメニューへ / →のくす牧場書庫について