【PHP】下らねぇ質問はID出して書き込みやがれ 85
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2009/06/15(月) 22:53:52ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 84
http://pc11.2ch.net/test/read.cgi/php/1240835951/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0822nobodyさん
2009/07/26(日) 16:17:49ID:???func0()呼んで
適当な配列にでも入れとけばいいじゃん
インタフェースの統一ってのが意味不明
0823nobodyさん
2009/07/26(日) 17:56:26ID:???こいつはとんだしったかだな
算数の質問しにくるような馬鹿が金融系開発?
釣りもほどほどにしとけ
0824nobodyさん
2009/07/26(日) 17:59:23ID:???アイディアを盗まれる前に起業すべき
http://itpro.nikkeibp.co.jp/article/COLUMN/20080104/290425/
>>821
*** data.php
<?php return array(1, 2, 3);
*** main.php
<?php $a = include 'data.php';
データをわざわざ実行コードにする必要性は?なければ別のフォーマットを選ぼう
serialize()/unserialize(), json_encode()/json_decode(), fgetcsv()/fputcsv()
0825nobodyさん
2009/07/26(日) 18:33:08ID:???・ファイル名に変換
・VisualBasic
・ストップウオッチを片手に処理速度を計測
あたりが凄まじくネタっぽいな
0826nobodyさん
2009/07/26(日) 18:47:06ID:???0828192.168.0.774
2009/07/26(日) 19:51:13ID:+70USpznechoのリファレンスを見ました。でも、↑のようなものについては見当たりませんでした。
これは、どのように解釈したらいいんでしょうか?また↑の出力結果は同じになりますか?
これと似た構文でC言語にもありますか?
よろしくお願いします。
0829nobodyさん
2009/07/26(日) 19:57:38ID:???0830nobodyさん
2009/07/26(日) 20:58:41ID:???function call_func($func_number){
require_once('func' . $func_number . '.php');
$result = func();
// おぞましい黒魔法でfunc()の定義を削除
return $result;
}
黒魔法の詳細は
ttp://jp2.php.net/manual/ja/function.runkit-function-remove.php
引数以外のもの(環境変数などのスーパーグローバルなど、関数からアクセスできるもの)で処理を分けるなら、勿論それでもいい。
まあ、オススメできない。俺なら、func1 - func9で定義される関数func()には別名を使っておく。
そうすりゃ、衝突を気にしなくていいからな。
OOP的なプログラム構造にするなら、まずメソッドfunc()を持つ別個のクラスを10個用意する。
で、上記call_func()は、直接結果を返すのではなく、引数などに応じて適切なファイルをrequireしてクラスのインスタンスを返す。
呼び出し側は$obj->func()を呼べば、望む結果が得られる。
メモリ消費を気にするなら、そもそも16,000なんて大きさの配列を作るべきではない。
毎回16,000個の変数を全部使う、ってんなら話は別だけどな。
0832nobodyさん
2009/07/27(月) 12:02:48ID:TX4gysr6しかしユニットテストを書いて実行すると、
Cannot send session cookie - headers already sent
というエラーが出てテストできません。
まあ当たり前と言えば当たり前なんですけど、でもテストできないのも困ります。
こんなとき、どうすればいいでしょうか。
つまり$_SESSIONを扱うライブラリで、Cannot send session cookie エラーを回避しつつテストするにはどうしたらいいでしょうか。
0833nobodyさん
2009/07/27(月) 12:13:13ID:???>サンプルデータ約110万件のデータ検索時間は約1秒になった
たった110万件のデータの中から特定のものを抽出するのに1秒掛かるの?速いの?
0834nobodyさん
2009/07/27(月) 12:29:27ID:???実行開始と終了で引き算して結果をどっか隅っこにでも出力すればいいのに
なんでそんなとこでアナログマなんだよ
0835nobodyさん
2009/07/27(月) 12:36:51ID:???問い合わせが来るだろうが。
夏休みは、学生の知ったかばかりだな。
0836nobodyさん
2009/07/27(月) 12:46:59ID:???0838nobodyさん
2009/07/27(月) 13:10:36ID:???aho の検索結果 約 4,440,000 件中 1 - 10 件目 (0.12 秒)
おまえはこれを否定してるんだな
それこそ知ったか、もし社会人なら恥ずかしくて自殺するレベルだぞ?
0839nobodyさん
2009/07/27(月) 13:13:54ID:???検索エンジンという特殊事例を出してきて、
しかもgoogleの一例だけで全てを語るこの薄っぺらい脳みそwww
0840nobodyさん
2009/07/27(月) 13:23:46ID:???検索エンジンの何が特殊事例なんだ?やってることは同じだろ
指摘を素直に認められないなんて、なんてちっぽけな人間なんだよ
0841nobodyさん
2009/07/27(月) 13:26:02ID:???0842nobodyさん
2009/07/27(月) 13:32:02ID:???0843nobodyさん
2009/07/27(月) 13:34:04ID:???0844nobodyさん
2009/07/27(月) 13:34:15ID:RGhhhkQisystem('ls')で望む結果は取得できたのですが
system('history')では何も出力されません(エラーも)
ソース下記状態です
<?
ini_set ( "display_errors", "1" );
ini_set('error_reporting', E_ALL);
system('history');
?>
サーバの/bin/以下をみるとlsがあるのにhistoryがありませんでした
これが関係していると思うのですが、コンソールからhistoryとうつと問題なく履歴が表示されます
そしてwhereis historyとうつと
[root@www bin]# whereis history
history: /usr/share/man/man1/history.1.gz /usr/share/man/man3/history.3.gz
のようにmanしかひっかからないのですが
historyはどこにあるのでしょうか?
また、そもそも
system('history');
が無反応なのは/bin/にhistoryがないから、で合ってるんでしょうか?
0846nobodyさん
2009/07/27(月) 13:37:12ID:???ケンカすんなよw
>>835氏は、通常のwebサイトやシステムで、実行時間を隅っこに表示するのはおかしい。
>>838氏は、実行時間を隅っこに表示する事は珍しい事ではない(検索エンジンなど)
と言ってると俺は読んだ。そして両方言ってることは間違ってないと思った。
0847nobodyさん
2009/07/27(月) 13:37:37ID:???historyは通常のコマンドじゃなくて、shell内のみで利用可能な命令。
cdとかと同じで、system()では実行できないと思うよ。
もし$HOME/.bash_history とかあれば、それを読み込んで表示するしかないと思う。
0848nobodyさん
2009/07/27(月) 13:39:54ID:???Manpage of BASH_BUILTINS
http://www.linux.or.jp/JM/html/GNU_bash/man1/builtins.1.html
historyは組み込みコマンド。
0849nobodyさん
2009/07/27(月) 13:44:50ID:???0850nobodyさん
2009/07/27(月) 14:26:50ID:RGhhhkQiありがとうございました
$HOME/.bash_historyから読み込めそうです
後学の為に組み込みじゃないコマンドをしっておきたいのですが
【組み込みじゃない】のをぐぐるときのキーワードを教えて頂けますでしょうか
0851nobodyさん
2009/07/27(月) 14:31:28ID:???0853nobodyさん
2009/07/27(月) 14:37:36ID:???文中でしても作法的におかしくはない?
0854nobodyさん
2009/07/27(月) 14:40:06ID:???0855nobodyさん
2009/07/27(月) 14:45:33ID:jUhtLxSqどうもです〜。
0856nobodyさん
2009/07/27(月) 14:57:47ID:???そして、たいてい代替案はある。
0857853
2009/07/27(月) 15:15:40ID:???設定ファイルを外部ファイルにしててそれを読み込もうとしてるんですけど
phpファイルの変数として定義されてるものです。
<?php
$hoge=13
?>
みたいな。
改修なので設定ファイル自体のフォーマットはかえられないので
includeしかないかなと
0858856
2009/07/27(月) 15:21:36ID:???0859nobodyさん
2009/07/27(月) 15:22:45ID:???0860nobodyさん
2009/07/27(月) 15:25:35ID:???0861nobodyさん
2009/07/27(月) 15:32:56ID:???0862856
2009/07/27(月) 15:56:32ID:???読み込むファイルが以下のような内容なんだけど、
局所化したほうがいいかと思って
Class hoge1{
Function hoge2(){
//ここで使う
}
Function hoge3(){
//ここで使う
}
Function hoge4(){
//ここでは使わない
}
}
0863nobodyさん
2009/07/27(月) 16:19:15ID:???0864nobodyさん
2009/07/27(月) 16:20:14ID:???importとincludeじゃ意味あいが違うけど
0865nobodyさん
2009/07/27(月) 16:22:58ID:????
それとは?
プログラムの変更は可能だけど、そういうことではなく?
Class hoge1{
Function hoge2(){
//ここで使う
include hoge.php
}
Function hoge3(){
//ここで使う
include hoge.php
}
Function hoge4(){
//ここでは使わない
}
}
0866nobodyさん
2009/07/27(月) 17:38:33ID:iOuW4Vu1【PHPのバージョン】5.3.0
【質問内容】
filesize関数を使って
1.ファイルサイズを取得
2.ファイルを書き換え
3.ファイルサイズを取得
としたとき、ファイル書き換え後にファイルサイズを取得しても、取得した値は書き換え前のものになってしまいます。
解決方法はありますか?
0867nobodyさん
2009/07/27(月) 17:40:26ID:???<?php
$time_begin = microtime(true);
/* expression */
echo "実行時間".(microtime(true) - $time_begin)."秒";
?>
チラ裏
0868nobodyさん
2009/07/27(月) 17:41:01ID:???ttp://jp2.php.net/manual/ja/function.clearstatcache.php
0869nobodyさん
2009/07/27(月) 17:46:09ID:iOuW4Vu1解決しました
ありがとうございます
0870nobodyさん
2009/07/27(月) 21:41:14ID:JxRE4otA例えば名簿アプリでmeibo_tableにループで10回(10人分)のデータをループで入れるとします
このとき、登録がうまくいった場合は「成功」失敗したら「失敗」と表示するケースで、
どのようにプログラムを書けば良いんでしょうか?
for($i=0; $i<10;$i++){
$rs = mysql_query($sql);
if(!$rs){
$err = 1;
}
}
if($rs){ echo "失敗";}else{echo "成功";}
こんな感じですか? どうも自信がないというか、もっと良いやり方がないか知りたいです
トランザクションというのがあるのも知っていますが、使い方がrollbackなどいまいちわかりません
その辺も含めて教えてもらえたら嬉しいです
よろしくお願いします
0871nobodyさん
2009/07/27(月) 21:43:09ID:???クラスにするんだったら
includeは一箇所のほうがいいと思うけどなぁ。。
で、変数の内容はprivateなメンバに入れとくかんじ。
もっとそれっぽく書くなら
フレームワークなんかのConfigとかいう感じのクラスを
参考にしてみるといいかも。
0872nobodyさん
2009/07/27(月) 21:55:43ID:???mysql_queryのエラー自体はその方法で判別できる。
エラー内容はmysql_errorで取得できる。
トランザクションについては、mysqlの場合InnoDBとかでないと出来ないので注意。
>>871
「改修なので設定ファイル自体のフォーマットはかえられない」とあるので仕方がないんじゃない?
0873nobodyさん
2009/07/27(月) 21:58:52ID:???の結果だけしか見てないんじゃあ。
ていうか$errは何に使うんだ
0874872
2009/07/27(月) 22:10:57ID:???最後のif文は$errを見ないと意味無いな
あと「$err = 1;」の行の前後でmysql_errorなどでエラー内容拾っておいたほうがいい
0875nobodyさん
2009/07/27(月) 22:13:45ID:zLQPD/lR【PHPのバージョン】PHP5.3.0
【連携ソフトウェア】特になし
【質問内容】
社内の簡易報告システムを作っています。
そのシステムのメニューをPHPで作っていて、入力した内容を別のdatファイル、
もしくはtxtファイルに入出力で保存する処理をするように設計しています。
そのメニューPHP内でチェックボックスを使用しているのですが、
チェックを入れて、セーブボタンを押すと、チェックを入れた内容が保持され、
PHPを開くたびにチェックしている状態、チェックしていない状態を表示させたいです。
今考えているのは、チェックボックスの配列を用意して、以下のような処理をし、
数値が1の時は表示画面で、チェックボックスがON、数値が0の時は表示画面で、チェックボックスがOFFという風に
処理をし、チェックボックスの状態に変更があった場合は随時更新していくという風にしたいのですが、
どういう風にチェックのスクリプトを書けばよいのか分かりません。
html部のチェックボックスにチェックが入っているのは、PHPでどのように判断させればよいのでしょうか?
chk[0] = 1; // 配列の数値が1の時はチェックボックスON
chk[1] = 0; // 配列の数値が0の時はチェックボックスOFF
chk[2] = 1; // 配列の数値が1の時はチェックボックスON
chk[2] = 1; // 配列の数値が1の時はチェックボックスON
0876nobodyさん
2009/07/27(月) 22:17:00ID:???書き込みというボタンのとこが文字化けを起こるのですが
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
と書くと治りました。
なぜですか?
某所からダウンロードしたソースには<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
と書いてないのですが・・・
0877876
2009/07/27(月) 22:17:45ID:On6c+/Yd0878nobodyさん
2009/07/27(月) 22:21:48ID:???形式変える必要はないよ。使いかたを変えるの。
設定ファイルで設定した変数(って分かりにくいな)を直に触るんじゃなくて
間にイチマイ挟む。
もしひとつのクラスでしか使ってないのなら、メンバ変数にしてもいいし
複数のクラスで使うんなら「設定値を保持してるクラス」を導入して
そのクラス経由で使うっていう。
まぁ。。そこまでやるかっていうのはあるけど
せっかくクラス使ってんならそういう方向で考えたほうがいいかなぁって。
0879nobodyさん
2009/07/27(月) 22:48:01ID:???ありがとうございました
$errで判別するのを書き間違えました
ご意見参考にして、やり直してみます
0881nobodyさん
2009/07/27(月) 22:57:18ID:???コンピュータは、文字をデータとして、つまり一種の数字として保存している。
例えば、「11」なら「あ」、「15」なら「お」、「23」なら「く」みたいなイメージな。数字と文字を1:1対応させるわけだ。
で、日本語をデータとして表現する方法、つまりこの対応付けにはいくつかの種類がある。これを文字コードという。
たとえば、「あ」は、Shift_JISコードでは16進数の「82A0」、EUC-JPコードでは「A4A2」、UTF-8コードでは「E38182」という数値として格納されている。
(16進数ってのは、htmlの色指定のアレと同じ。09の次が0Aになって、0Fの次が10になる数値の表現方法)
で、コンピュータは文字を表示する際に、「82A0」を「あ」へと再変換しないといけないわけだが。
上記のように、日本語を数値として表現する方法にはいくつか種類があるので、「このデータは、どの種類の方法で文字を数字に直したものなのか?」が分からんと日本語に戻せないわけだ。
大体の場合自動で上手い事判別してくれるわけだが(3通り試して一番それっぽいのを選ぶとか)、たまにミスる。ミスった場合、文字化けが発生する。
文字化けさせないためには、ミスらないようにすればいい。
そのためには、自動判定に頼らず、「このデータはどの文字コードで文字を表現したものか」をきちんと指定すればいい。
そのための方法のひとつがmetaタグ。
ちなみに、アルファベットは「ASCIIコード」という統一標準があるので、まず文字化けしない。
0882nobodyさん
2009/07/27(月) 23:02:18ID:5jW2DCWq今利用しているレンタルサーバに拡張モジュール BC MATH が入っていないのですが、
ぜひ BC MATH を使いたいと思っています。
そこで、単純に BC MATH に属する関数をまとめた PHP ファイルを include する考えに至ったのですが、
この拡張モジュールに含まれる関数(bccomp とか)の PHP 版のソースコードはどこかにないでしょうか?
詳しい方よろしくお願いします。
0883nobodyさん
2009/07/27(月) 23:13:36ID:???それってソースはPHPじゃないよ。
Cか何か、つまりPHPのソースの中に含まれてる。
じゃないとPHP上で数字型データの制約を外部から
書き換えることはできない。(文字型演算に突っ込む
という手があるけど最悪CPU100%食ったままタイム
アウトなんてくらいの負荷がかかる可能性がある)
ちょいと難しいんじゃないかな
0884nobodyさん
2009/07/27(月) 23:23:42ID:???0885nobodyさん
2009/07/28(火) 00:04:32ID:IxhPfTut助言ありがとうございます。
引数をString型で受けとるなどの処理をすれば、PHPでも同様の機能を実現することは不可能ではないので、
PHPで書かれた同機能の関数を探していました。
そもそも邪道というか、必要とされない手段だから誰も作らない=見つからないのでしょうか。
>>884
普通はこういう場合、どのような手段をとるのでしょうか?
アドバイスをいただけると助かります。
0886nobodyさん
2009/07/28(火) 00:33:26ID:???まずは、これを読んでください
◯HTML フォームで配列を使用するにはどうすればよいですか?
http://www.php.net/manual/ja/faq.html.php#faq.html.arrays
これら内容に従うことで、チェックされた項目を配列として取得出来ます。
後は、保存された内容と比較すればよいでしょう
0887nobodyさん
2009/07/28(火) 03:26:44ID:UNpQ8CBnそのページを参考にチェックボックスの処理はすることができましたが
datもしくはtxtに保存された内容と比較はどうすればいいのでしょうか
txtファイルには110010011... といった風にチェックボックスを入れたところは1、
そうでないところは0と記載されているのですが表示画面に反映できません
0888nobodyさん
2009/07/28(火) 03:39:40ID:???0889nobodyさん
2009/07/28(火) 03:45:50ID:???どの言語でもライブラリがなければ自分で作るし>>882の考えは普通よ
大抵の場合PEARにあがってるから使ってあげようぜ
http://pear.php.net/package/Math_BigInteger
0890nobodyさん
2009/07/28(火) 03:48:06ID:???0891nobodyさん
2009/07/28(火) 03:53:16ID:UNpQ8CBnif文でいけました
しかし、チェックを入れてセーブボタンを押すとチェックを入れたチェックがすべて消えて、
もう一度セーブボタンを押すと反映されたものが表示されます
こういった風になるのは普通なのでしょうか?
0892nobodyさん
2009/07/28(火) 03:57:41ID:UNpQ8CBn反映さえた後にそのチェックボックスをオフにするとすべてオフといった状態に反映されません。
何がいけないのでしょうか?
0893nobodyさん
2009/07/28(火) 04:08:31ID:???0894nobodyさん
2009/07/28(火) 04:25:47ID:UNpQ8CBn0895nobodyさん
2009/07/28(火) 05:11:11ID:UNpQ8CBnttp://www.rupan.net/uploader/download/1248725391.txt
パスはphpです。
check.phpとファイル名を変えて、別途check.txtファイルをご用意ください。
0896nobodyさん
2009/07/28(火) 06:46:46ID:???<?php
$n = 10;
//書き込みロジック
$text = "";
if (isset($_POST['chk'])) {
for ($i = 0; $i < $n; $i++) {
if ($_POST['chk'][$i]) {
$text .= "1\n";
} else {
$text .= "0\n";
}
}
file_put_contents("check.txt", $text, LOCK_EX);
}
//表示ロジック
$list = file("check.txt");
for ($i = 0; $i < $n; $i++) {
if ((int)$list[$i]) {
echo "<input type=\"checkbox\" name=\"chk[{$i}]\" value=\"{$i}\" checked>{$i}<br>\n";
} else {
echo "<input type=\"checkbox\" name=\"chk[{$i}]\" value=\"{$i}\">{$i}<br>\n";
}
}
?>
なるべくシンプルに書いたつもり
インデントに全角スペースつかってるのでそのままコピペしても動かないので注意
原因は・・・ロジックの流れにあると思うけど詳しく調査してる時間もないので
詳しい人に任せるとしよう
0897nobodyさん
2009/07/28(火) 07:04:16ID:???すべてのチェックをオフにした場合
ii (isset($_POST['chk']))が働かないので更新されない
だからそこは変えたほういいよ
前回の状態と比較してかわってたら更新とかにすると
またやることが増えるので
単純にPOSTされたときに更新すればいいのだから
if ($_POST)とかにしたほうがいいと思う
0898nobodyさん
2009/07/28(火) 08:19:20ID:UNpQ8CBnありがとうございます
とりあえずコピペして動作確認をしてみたのですが、
やはり配列0の箇所が反映されません
>>891の修正は完璧でした
>>897
if ($_POST)にしてみたのですが、動作は変わりませんでした
0899nobodyさん
2009/07/28(火) 08:41:56ID:/osX6Bgiありがとうございます!
PEARは導入したことがなかったのですが、使用してみようと思います!
0900nobodyさん
2009/07/28(火) 08:47:54ID:/osX6Bgiクラス内で BC MATH 関数を使用しているようでした…;;
0901nobodyさん
2009/07/28(火) 09:35:09ID:???0902nobodyさん
2009/07/28(火) 10:28:24ID:???今手元に環境がないから動くかわからないけど、
array_fillで初期化してあらかじめ配列を用意しておいたらどうだろうか?
0と1だけ入れればいいのなら、
$n = 10;
if (isset($_POST['chk'])) {
$text = "";
$tmp = array_fill(0, $n, 0);
foreach ($_POST['chk'] as $key => $value) {
$tmp[$key] = 1;
}
foreach ($tmp as $value) {
$text .= $value."\n";
}
file_put_contents("check.txt", $text, LOCK_EX);
}
チェックボックスに何もいれなかったらエラーが出たり、
>>897の指摘にあるようなことがおきるので正常終了のための条件が必要。
チェックボックスが空の状態でもページを読み込んだ初期の状態でも、
おそらく!$_POST['chk']の状態であるので一工夫必要。
0903nobodyさん
2009/07/28(火) 12:16:04ID:iDr4ntOeそれともCみたくゴミが入ってることもあり得るのでしょうか?
0904nobodyさん
2009/07/28(火) 12:20:17ID:???http://jp2.php.net/manual/ja/language.variables.basics.php
0906nobodyさん
2009/07/28(火) 14:14:11ID:nFAJUBt9一番いいモジュールってどれでしょうか?
できればフリーで。
0908nobodyさん
2009/07/28(火) 14:32:23ID:???ttp://pchart.sourceforge.net/
0909nobodyさん
2009/07/28(火) 18:13:11ID:???ドキュメントぐらい読もうぜ
GMP/BCMath/俺俺実装のいずれかを使うって書いてあるでしょ
> Uses the GMP or BCMath extensions, if available,
> and an internal implementation, otherwise.
0910nobodyさん
2009/07/28(火) 19:06:49ID:???0911nobodyさん
2009/07/28(火) 19:13:18ID:???0912nobodyさん
2009/07/28(火) 19:58:38ID:???異論は認める
0913nobodyさん
2009/07/28(火) 20:09:28ID:???0914nobodyさん
2009/07/28(火) 20:16:49ID:???サンプルが豊富にあって、重宝してたんだが
↓サンプルサイト
http://pear.veggerby.dk/samples/
0915nobodyさん
2009/07/28(火) 20:46:32ID:???>>886に書いたページの次のFAQ
◯"select multiple" タグで選択された全ての結果を取得するには どうすればよいですか?
ここに
「... count() 関数を使えば選択された項目の数を知る ことができます。...」
と書かれています。
つまり、チェックを付けた箇所しか値が飛んできません。
チェックを外しても、値は飛んできません。
(PHPの仕様として、このページ以外のところに書かれてるとは思うのですが、不明です。)
従って、何番目をチェックしたかも保存する必要があるでしょう
例えば、保存フォーマットを
番号=チェック状態
とするとか...
この場合、file関数で配列展開した後、各行に対してexplodeで番号とチェック状態に分解すればよいでしょう。
0916nobodyさん
2009/07/28(火) 20:48:52ID:???「もう一度セーブボタンを押すと...」の所も同じ原因でしょう
(全てoffのため、$_POST['chk']がセットされず、ファイル更新されなかった。多分)
>>891の前半は不明。
$list = file("check.txt");
の直後に、print_rかvar_dumpで$listの内容を表示してみると何か原因が見えてくるかもしれない
0917nobodyさん
2009/07/28(火) 23:38:24ID:sYVzfVPt【PHPのバージョン】PHP5.2.9(XAMPP1.7.1)
【連携ソフトウェア】特になし
【質問内容】
PHPで以下のコードを書いたときに配列の値が出力されません。
原因を教えてください。
<?php
class Sample{
public $i;
public $arr = array("A", "B", "C", "D");
function Sample(){
$this->i=0;
}
function output(){
while($this->i < count($this->arr)){
print("$this->arr[$this->i]<br>");
$this->i++;
}
}
}
$samp = new Sample();
$samp->output();
?>
出力結果
Array[0]
Array[1]
Array[2]
Array[3]
foreachを使用する方法ならうまく出力されますが、この方法だと
なんでうまくいかないのかわかりません。
0918nobodyさん
2009/07/28(火) 23:52:34ID:???print( $this->arr[$this->i].'<br>');
または
print( "{$this->arr[$this->i]}<br>");
0919nobodyさん
2009/07/29(水) 00:09:58ID:4FaRK/k2ありがとうございました。期待する表示がされました。
これってどういうことなんでしょうか?
print関数に渡す前に$thisを解決しておく必要があるということでしょうか?
0920nobodyさん
2009/07/29(水) 00:19:05ID:???シングルクオートの場合は変数すらも文字列として扱われる
○ "$var<br>";
○ "{$var}<br>";
× '$var'<br>;
× '{$var}<br>';
○ $var . "<br>";
○ $var . '<br>';
× "$this->a[]<br>"
○ "{$this->a[]}<br>"
○ $this->a[] . "<br>"
0921nobodyさん
2009/07/29(水) 00:34:24ID:4FaRK/k2おお、なるほど。
解説ありがとうございました。
レス数が900を超えています。1000を超えると表示できなくなるよ。