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

くだすれPHP(超初心者用)4

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/06/13(金) 20:32:36ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。

PHP Home Page
http://www.php.net/
http://jp.php.net/



前スレ: くだすれPHP(超初心者用)3
http://pc11.2ch.net/test/read.cgi/php/1193295871/

適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
07667402008/11/08(土) 23:53:08ID:???
>>760
回答ありがとうございます。
色々調べて実装してみます!
0767nobodyさん2008/11/09(日) 00:15:50ID:???
>>765
kt.phpの11行目がエラー吐いてるから見てみろよ
0768nobodyさん2008/11/09(日) 00:55:43ID:???
>>765
お前本当にphp勉強してたのか? 基本が全然ダメっぽいが。

で、「set.phpが開けねーぞボケ」ってエラーなんだがset.phpはどこに置いたのさ。
パッケージ見る限りちゃんと入ってるから正常にアップロードできてりゃ問題ないはずなんだが。
0769nobodyさん2008/11/09(日) 12:58:05ID:???
設置スレに行くべきお客さんが間違ってここに来ただけのような。
0770nobodyさん2008/11/09(日) 14:39:19ID:???
勉強したって言っておけば誘導されなくて済むと思ったんだろう
0771nobodyさん2008/11/09(日) 14:44:33ID:???
ラーメンを食いたいのに間違って吉兆に行ったようなもんか
0772nobodyさん2008/11/09(日) 15:17:02ID:???
残りもん食わされんぞ、それw
07737652008/11/09(日) 17:25:53ID:???
いやいや、設置に関しては出来てんだよ。ただ携帯からアクセスすると変になるんだよ。
質問の仕方が悪かったかもしれん。すまん。
このチャットを携帯からも使用出来るようにしたいんだが、どうすればいいのだろうか・・・というのが聞きたかっただけで。
違うスレで質問した方がいいなら移動します
0774nobodyさん2008/11/09(日) 17:32:27ID:???
質問させてください。
SQLiteを使っていて、UNIQUEなフィールド"hoge"からある値のレコードを抽出しています。

$db = sqlite_open("hogehoge.sqlite");
$command = "SELECT * FROM articles WHERE hoge = 'ある値'";
$query = sqlite_query($db,$command);

この時、ある値のレコードが存在する場合の処理と存在しない場合の処理を分けたいのですが、
どのように条件文を設定すればよいでしょうか?

if($query){
}else{
}

で分けようとしたのですが、うまくいきませんでした・・・
0775nobodyさん2008/11/09(日) 17:36:48ID:???
>>773
だから設置がちゃんとできてりゃ>>761なんてエラー出さねーんだって。
なにを根拠にちゃんとできてるなんて言い張るんだお前は。
もういいや、とりあえずphpの話じゃなくなってるから↓行ってこい。

CGI設置について質問【Part3】
http://pc11.2ch.net/test/read.cgi/php/1176143582/
0776nobodyさん2008/11/09(日) 17:50:15ID:???
>>774
$queryの中身を見てみるといい
07777742008/11/09(日) 17:57:16ID:???
>>776
なんだかよくわからないんです、
常にNULLみたいで・・・
sqlite_fetch_allをした後に判断するしかないということでしょうか?
0778nobodyさん2008/11/09(日) 18:04:45ID:???
どうでもいい指摘だけどそこで$queryって変数名はおかしい
$resultとかにしてよ$rowsとかにしてください
0779nobodyさん2008/11/09(日) 18:07:22ID:???
commandかぁ。懐かしい感じだ。

常にnullって値入れてないんじゃないのかw
07807782008/11/09(日) 18:10:22ID:???
ああ
$queryに結果が入ってるのかと思ってた
じゃあ$stmtとかかなあ
07817742008/11/09(日) 18:39:25ID:???
ごめんなさい。
動作確認したつもりだったんですが、ソースにバグがありました。
修正後にechoで中身を見てみたところ、
中身があるときには、
Resource id #148
ないときには何も表示されませんでした。

これは先ほどの
if($query){
}else{
}
で処理がわけられるということでしょうか?
0782nobodyさん2008/11/09(日) 18:44:23ID:???
is_null($query)でいいんじゃね?
07837742008/11/09(日) 19:11:21ID:???
なんだか混乱していて申し訳ないです。
中身があるときもないときも
Resource id #148
のようなものが入っているみたいです。
その後のsqlite_fetch_allをした後なら空の配列ができるようですが、
空の配列かどうかを調べる関数はありますでしょうか?
07847742008/11/09(日) 19:16:48ID:???
自己レスすみません。
empty関数を使って場合わけできました。
結局、sqlite_fetch_allを行った後の返り値で行いました。
みなさんありがとうございました。
0785nobodyさん2008/11/09(日) 19:35:24ID:???
empty使うくらいなら変数そのままでいいだろw
07867742008/11/09(日) 19:53:29ID:???
>>785
そうだったんですか・・・
アホですみません
0787nobodyさん2008/11/09(日) 20:00:29ID:???
あとわざわざfetchしなくてもsqlite_queryの結果でいいじゃん
07887742008/11/09(日) 20:05:13ID:???
>>787
ごめんなさい
781では中身がないときは何も表示されないと書いたのですが、
基本的にはResource idとかいうのが入っていたみたいです。
空に見えたのはなにかのソースバグだったのかもしれません。
0789nobodyさん2008/11/09(日) 21:23:22ID:???
すみません。
↓テキストボックスにキーワードを入力して、ボタンを押すとURLに飛ぶといったプログラムを
作っているのですが、、、
<?
if($val == "1")header("LOCATION:http://blogsearch.google.com/blogsearch?hl=ja&ie=UTF-8&q=$txt&btnG=ブログ検索&lr=lang_ja");
if($val == "2")header("LOCATION:http://groups.google.co.jp/");
if($val == "3")header("LOCATION:http://blogsearch.google.com/");
if($val == "4")header("LOCATION:http://jp.youtube.com/");
?>

<form action=link.php method=POST>
<input type=text name=txt>
<input type=radio name=val value=1>ブログ
<input type=radio name=val value=2>グループ
<input type=radio name=val value=3>書籍
<input type=radio name=val value=4>YouTube
<input type=submit value=送信>
</form>

http://blogsearch.google.com/blogsearch?hl=ja&ie=UTF-8&q=$txt&btnG=ブログ検索&lr=lang_ja
↑$txtと書いてますが、ここにキーワードが入るわけですが、文字化けしちゃうんです><
誰か助けて><
0790nobodyさん2008/11/09(日) 21:28:08ID:???
なんでJavaScriptじゃなくてわざわざPHPでやってるのかは置いといて
敬語使ってても「><」が入ると舐め腐ってるようにしか見えないのも置いといて

文字のエンコード確認しろ茄子
0791nobodyさん2008/11/09(日) 21:32:58ID:???
>>790
全然なめてなんかないんですが、
文字のエンコードですか??アップするファイルはSHIFT-JISです。
サーバはxrea使ってるのでわかりません。
0792nobodyさん2008/11/09(日) 21:33:27ID:???
&ie=UTF-8
これは何を意味してんの?
07937892008/11/09(日) 21:38:23ID:???
>>792
あそっか!
$txt=mb_convert_encoding($txt, "UTF-8", "auto");
を付け加えたら治りましたwありがとうございます
0794nobodyさん2008/11/09(日) 21:38:30ID:???
>>790
>敬語使ってても「><」が入ると舐め腐ってるようにしか見えないのも

同意します><
07957892008/11/09(日) 22:01:55ID:???
やっぱ何かうまくいってないみたいなのでjavascriptにします
0796nobodyさん2008/11/10(月) 01:14:00ID:???
Web制作板から流れてきました。

Windows Vista Ultimate でXAMPPを使用を試みています。
Apacheが起動できておりません。
(以下のようになってしまいます)

E:\xampp>apache_start.bat
Diese Eingabeforderung nicht waehrend des Running beenden
Bitte erst bei einem gewollten Shutdown schliessen
Please close this command only for Shutdown
Apache 2 is starting ...
(OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、ま
たはポートのどれか 1 つのみを使用できます。 : make_sock: could not bind to addr
ess 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs

Apache konnte nicht gestartet werden
Apache could not be started
続行するには何かキーを押してください . . .

port443が使用されているということは分かったのですが、
何のソフトが使用しているのか判断ができません。
どうしたらポートを使っているソフトが分かりますでしょうか?
0797nobodyさん2008/11/10(月) 01:16:54ID:???
初心者がxamppはやめなさい
0798nobodyさん2008/11/10(月) 01:23:35ID:???
>>797
助言ありがとうございます。
了解しました。

使用しない方がいい理由を教えていただけますか?
想像しているのは

・初期構築のスキルが付かない
・Windows上に構築するよりLinux上の方が楽

等ですが正しいでしょうか?
0799nobodyさん2008/11/10(月) 01:25:18ID:???
443ってのはSSLだろうな
既にwww鯖が入ってる とかでは?
0800nobodyさん2008/11/10(月) 01:32:25ID:???
>>798さん

>port443が使用されているということは分かったのですが、
>何のソフトが使用しているのか判断ができません。
>どうしたらポートを使っているソフトが分かりますでしょうか?

「セキュリティが強化されたwindowsファイアウォール」を見て一歩前進です。

Secure Socket トンネリング プロトコル (SSTP 受信)

が受信でport443を使用している模様です。
0801nobodyさん2008/11/10(月) 02:09:47ID:???
jpg画像をリサイズしたいのですが、
以下のように実装したら色がかなり落ちてしまいました。


$img = file_get_contents("他サイトのURL");
$im = imagecreatefromstring($img);

$outputResourse = fopen("保存先パス","w");
flock($outputResourse,LOCK_EX);
fwrite($outputResourse,$img);
list($width , $height) = getimagesize(保存先パス);

$dstImage = imagecreate(100,100);
imagecopyresampled($dstImage, $im, 0, 0, 0, 0, 100, 100, $width, $height);

fclose($outputResourse);

$outputResourse = fopen("保存先パス2","w");
flock($outputResourse,LOCK_EX);
imagejpeg($dstImage,"保存先パス2");


調べてみるとimagecopyresampled関数にはパレットイメージの制限(255+1色)による問題というのがあることが分かったのですが、
そのせいなのでしょうか?
だとすればどのように対処したらよいかアドバイスをいただけませんか?
0802nobodyさん2008/11/10(月) 02:12:20ID:???
>>801
http://www.google.com/search?q=php+%E3%83%AA%E3%82%B5%E3%82%A4%E3%82%BA
08037162008/11/11(火) 23:05:59ID:pJUkayYB
>>720
>>721
レスありがとうございます。御礼遅れてすいません。
参考にさせて頂きますm(_ _)m
共用サーバ使ってるとセッションデータはデフォルトのままだと漏れることがあると聞いたんで独自に書いてDBで管理しようかと思っているんですが・・けっこう大変そうですね。
しかし共用サーバでなければデフォルトのままでもいいのかなとも思うんですがどうなんでしょう。DB管理にするとI/Oが増えるんじゃないかとも思うんですが。
0804nobodyさん2008/11/11(火) 23:24:31ID:???
>>803
DBで管理した事あるけど
DB鯖次第かな・・・

I/Oはreadに1回updateに1回あとsession破棄とGCの時に1回ずつだから
それ程気にする必要もなかったと思う
0805nobodyさん2008/11/12(水) 00:47:38ID:???
>>803
そのサーバの設定にもよるけど、
セッションファイルは apache ユーザで 600 で作られるから、
一般ユーザは apache なんかに su できないから、まあ安全。

どれくらい安全かというと、セッションIDを推測されるのと同じくらい。

負荷はサイトのアクセス数による。1時間に1万アクセスくらいならなんでもかまわない。
08067162008/11/12(水) 11:17:06ID:oEcWCu5N
>>804
>>805
おお。レスありがとうございます。非常に参考になります。

>セッションファイルは apache ユーザで 600 で作られるから、
http://www.ibm.com/developerworks/jp/opensource/library/os-php-secure-apps/
この記事の「セッションを保護する」の欄で、
共有サーバーではセッション・ファイルを読み取るスクリプトを攻撃者が作成し、値を取得することができてしまう。
みたいなことが書いてあります。
この記事、色々と記述に問題があるようなのですが、このセッションの問題は本当にあるんじゃないかなーと。オーナーapacheでパーミッション600ならやられそうな気がしますが、どうでしょう。

>I/Oはreadに1回updateに1回あとsession破棄とGCの時に1回ずつだから
それ程気にする必要もなかったと思う
>負荷はサイトのアクセス数による。1時間に1万アクセスくらいならなんでもかまわない。

ウェブ製作会社でバイトしてるんですが、DBの負荷で一番高いのがセッションのテーブルのようなのです。
やはりPV増えるに連れてボトルネックとなりそうですね・・
0807nobodyさん2008/11/12(水) 13:18:13ID:???
>>716
攻撃するにもファイル名を総当たりしなきゃいけないので、
それは外部からのセッションIDの総当たりとあんまり変わらないと思われ。
逆にセッションファイル内を読まれても安全に作っておくべき。
パスワードを平文で保存しないとか。

$_SESSION['passwd'] = 'passwod'; // ×
$_SESSION['passwd'] = md5( 'passwod' ); // ○

セッション管理なんてインデックス張ってればDB処理でもいちばん軽い部類の処理だから、
その設計が悪いと思われ。
0808nobodyさん2008/11/12(水) 14:02:54ID:???
単なる認証だけでセッションにパスワード入れるのはマジキチがやることだけどな
0809nobodyさん2008/11/12(水) 14:06:36ID:???
セッションにパスワード入れる必要なんてあんの?
0810nobodyさん2008/11/12(水) 14:18:19ID:oEcWCu5N
レスありがとうございます。

>攻撃するにもファイル名を総当たりしなきゃいけないので、
む、そうなんですか。
攻撃者が作るスクリプトってJavaScript??って思ったんですがどういうスクリプトなんでしょう。
JavaScriptはあまり分からないですし、何かサーバ側のファイルの一覧を取得できてしまうようなスクリプトが作れるのかなと思ってました。
でもよくよく考えたら、そんなことできたらセッション以外の点でも大問題ですね汗
0811nobodyさん2008/11/12(水) 14:29:42ID:???
>>810
セッションファイルの安全性というのは文字列の複雑さだけで保たれてます。例えば、

http://exsample.com/?PHPSESSID=1234

だと駄目だけど、

http://exsample.com/?PHPSESSID=99bcf96055818a3b68faa0f348740e84

ならまあ許容できるよね。ぐらい。んで、セッションファイルも

drwxrwx--- 2 root apache 131072 2008-11-12 14:26 .
-rw------- 1 apache apache 53 2008-11-09 01:28 sess_vptubrcd9dr9bjc7o0lbunep56

なんて保存されているので、root か apache ユーザに su できなければ、
セッションファイルのファイル名もわからないのです。
なので総当たりするしかないのですが、その総当たりするスクリプトのことだと思います。
0812nobodyさん2008/11/12(水) 15:08:08ID:???
open_base_dirが設定されていないサーバで
sessionファイルが全て同一ディレクトリに保存されている場合
phpからアクセス可能なんじゃないの?

ini_get等で保存ディレクトリ取得

ディレクトリ内スキャン

ファイルを読み取り

全てPHPで組めばアクセスできると思うが・・・
0813nobodyさん2008/11/12(水) 15:37:32ID:???
あ、SESSIONIDとファイル名は関連があるからな
0814nobodyさん2008/11/12(水) 22:36:42ID:???
超初心者スレならばまずはPHPとはなんぞやと言う事を説明せよ。
そして俺を一人前のPHPerに育て上げるのだ。
わかったな?
〇〇嫁!は禁止。
キチガイ等と言うやつは負け組
↓では開始
0815nobodyさん2008/11/12(水) 22:45:09ID:???
ググレカス
0816nobodyさん2008/11/12(水) 22:50:58ID:???
ググレカレーも禁止
0817nobodyさん2008/11/12(水) 22:57:12ID:???
>>814 まずはお前が「一人前のPHPer」とはなんぞやを説明してからだ
0818nobodyさん2008/11/12(水) 23:12:17ID:???
>>817
PHPもしらんのに答えられるはずもなかろう。
愚かもの
0819nobodyさん2008/11/13(木) 08:15:49ID:???
質問

mbstring.encoding_translation = On
になってる PHP 環境があります。

php.ini も .htaccess も変更出来ない場合
他に Off にする方法はありますか。
0820nobodyさん2008/11/13(木) 08:18:54ID:???
自分で明示的にencodingを指定すれば?
0821nobodyさん2008/11/13(木) 09:21:03ID:???
超初心者なのでわかりません > <
0822nobodyさん2008/11/13(木) 09:25:26ID:???
mbstring.internal_encoding を指定しても POST データは translation されちゃいますよね。
受け取ったデータをまた変換し直してやるしかないのかな。
0823nobodyさん2008/11/13(木) 11:32:40ID:???
質問させてください。

unixtojd関数を使用したかったので、--enable-calenderをつけてphpを再インストールし
phpinfoで--enable-calenderが表示されていることを確認したのですが
いまだCall to undefined function: unixtojd()とエラーが表示されたままになってしまいます。
この関数を利用するのに、別に必要なものがあるのでしょうか?

環境はcentos5.0、apache2.0、PHP4.4.8で、会社のローカル開発用サーバで運用しています。
0824nobodyさん2008/11/13(木) 19:04:30ID:lI0vnur7
ピーエイチパーって流行ってるの?
0825nobodyさん2008/11/13(木) 21:47:24ID:+wSFnCZL
Apache2.2 + mod_fcgid + php-cgi5.2.6で大きなファイルをアップロードできません。

下記に書いたコードを上記環境で動かすと10KB-20KB程度のファイルは正常に
アップロードできるのですが、それ以上となるとエラーとなってしまいます。
php.iniのアップロードサイズなどは問題ないようなのですが。

原因がわかりません。
なんででしょう?


<html>
<head></head>
<body><?php
$uploaddir = '/tmp/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>
<form enctype="multipart/form-data" action="<?php print($_SERVER['PHP_SELF']); ?>" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
</body>
</html>
0826nobodyさん2008/11/13(木) 21:59:17ID:???
>>825 エラーログを見たまへ
0827nobodyさん2008/11/13(木) 22:06:05ID:Z/0actP/
お願いします
登録してある複数のメアドに一斉にその内容の
メールするフォームのCGIを紹介してください
できればメアド登録もWEB上で行いたいのですが
0828nobodyさん2008/11/13(木) 22:32:45ID:???
>>827
スレ違い
0829nobodyさん2008/11/14(金) 00:39:38ID:???
つ無料メーリングリストサービス
0830nobodyさん2008/11/14(金) 12:41:20ID:???
>>825
自分で
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
って指定してるからだろ
このvalueはbyteだPHPはこれもチェックしたはず
0831nobodyさん2008/11/14(金) 13:06:06ID:???
>>824
 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ・∀・)< PHPの時代は終わった。今から勉強しても使えません。
 ( 建前 )  \_______________
 | | |
__(__)_)______________
 ( _)_)
 | | |
 ( 本音 )  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( 。A。)< 新参の商売敵は潰しておくか
  ∨ ̄∨   \_______________
0832nobodyさん2008/11/14(金) 15:44:43ID:Xq4mZFEa
超ド級初心者ですが、質問させてください。
TOP画面で「こうげき」「まほう」のボタンがあり、敵のHPが100あります。
それを、こうげきした場合はランダムに「1〜10」の間で敵のHPを減らす。
まほうなら「20〜30」で減らす様にして、繰り返す。
敵のHPがゼロになったら、結果の別画面へと言う物をPHPで制作しているのですが、
「こうげき」したら⇒HPが「1〜10」減って表示が100から引かれる処理がイマイチわかりません。
rand自体の動きはわかるのですが、それを応用して上記の様な処理の仕方がわかりません。
お願いします。
0833nobodyさん2008/11/14(金) 16:01:48ID:???
値の保持の仕方が分かってないんだね
Cookieとかセッションを使うと良いよ
0834nobodyさん2008/11/14(金) 17:31:37ID:Xq4mZFEa
>>833
ありがとうございます。
色々と調べて、試してみます!
0835nobodyさん2008/11/14(金) 22:45:07ID:???
if(@is_file(THUMB_DIR.$time.'s.jpg'

この@ってどう言う意味があるんでしょ?
0836nobodyさん2008/11/14(金) 22:50:48ID:???
自己解決しました、エラーを出ないようにするんですね。
0837nobodyさん2008/11/15(土) 04:48:34ID:INPBoIvZ
今日apacheとphpを導入したのですが
<?php phpinfo(); ?>を行っても文字だけがlocalhostに出るだけで
phpがうまく実行されません
一通り見たのですが間違ってないような感じでした
また、index.phpでのファイルはなんともないのですが
test.phpを見ようとするとファイルのダウンロードになってしまいます


このような状況のときapacheの設定が悪いのか phpの設定が悪いのかどっちなのでしょうか?
apacheは2.0.63でphpは5.2.6です
よろしくお願いします
0838nobodyさん2008/11/15(土) 04:55:04ID:???
AddHandlerかましてるか?
08398372008/11/15(土) 14:23:50ID:INPBoIvZ
>>838
レスサンクス
AddHandlerがどのような状態になっていればいいんでしょうか?
ttp://jp.php.net/manual/ja/configuration.php
を見たらaddoverride allにすればいいと書いてあったのでした結果
次はlocalhostの画面に何も写らなくなりました
PHPと認識していないのでしょうか?
0840nobodyさん2008/11/15(土) 14:44:32ID:???
>>837
まさかその程度の知識で鯖を立ててるんじゃあるまいな?
08418372008/11/15(土) 14:49:04ID:INPBoIvZ
そのつもりですが
そのほかにどういう知識が必要なんですか?
まだ初めたばっかです
0842nobodyさん2008/11/15(土) 17:09:43ID:???
基礎から勉強しろ

まさか「どうやって勉強すればいいですか?」とか聞くまいな
0843nobodyさん2008/11/15(土) 17:15:09ID:k8oNRHMF
今勉強用に弄ってるサンプルソースに
if(!$img_tmp) {
echo $this->error("ファイルを入力してください");
echo $this->html_foot();
exit;
} elseif(($img_size/1024) > $this->max_file) {
echo $this->error("ファイルサイズが大きすぎます");
echo $this->html_foot();
exit;

error〜は自分で定義するエラーだと分かるんですが
こんなソースがあったんですけど$this->の部分がよくわかりません。
これってなんでしょうか?
0844nobodyさん2008/11/15(土) 17:17:11ID:k8oNRHMF
日本語がおかしすぎますねorz
0845nobodyさん2008/11/15(土) 17:25:43ID:???
そんなレスする暇があったら訂正したほうが・・
$this->っていうのはクラス内でローカルメンバを扱いたいときに遣う
0846nobodyさん2008/11/15(土) 17:50:25ID:k8oNRHMF
>>845
クラス内でローカル変数とかをグローバル変数と区別するための決まり事ってことでOKでしょうか?
0847nobodyさん2008/11/15(土) 18:51:39ID:???
全然違う
0848nobodyさん2008/11/15(土) 19:14:34ID:???
ローカル変数でもグローバル変数でもない、インスタンス変数だ。
オブジェクト指向プログラミングの基礎。phpではPHP5から本格的に導入された。
現代的なプログラミングをする上での必須知識だから、早めに習得したほうがいい。
class Person{
 private $name;
 function sayName(){
  echo 'My name is ' . $this->name . "\n";
 }
 function setName($var){
  $this->name = $var;
 }
}
$a = new Person();
$b = new Person();
$a->setName('Andrew');
$b->setName('Brian');
$a->sayName(); // My name is Andrew
$b->sayName(); //My name is Brian
$a->getName()を呼ぶ時、getName()内の$thisは$aを指す。$b->getName()の時は$bを指す。
0849nobodyさん2008/11/15(土) 19:17:21ID:???
sayName lol
0850nobodyさん2008/11/15(土) 19:33:28ID:???
echo $a->getName();
って感じでサンプル書いたら「getName()の最後のreturnってなんですか><」とか言われる可能性があるだろダラズ。
0851nobodyさん2008/11/15(土) 21:03:33ID:k8oNRHMF
>>848
サンプルまでつけていただいてありがとうございます。
オブジェクト指向の理解がちゃんとできてないので何となくですが、
1つのクラスから複数のインスタンスを生成した際にごっちゃにならないために・・・・??
理解力なくてすみませんorz
0852nobodyさん2008/11/15(土) 21:14:43ID:???
じゃオブジェクト指向理解すれ
08538452008/11/15(土) 23:46:02ID:???
すまん
ローカルメンバとか言わないんだな・・
0854nobodyさん2008/11/16(日) 06:07:17ID:QRvDYE1C
以下の変数$csvにはCSV形式のデータが入っており、
これを配列$csv_arrに置き換えたいと思っています。

$csv = <<EOF
2008-11-13, りんご, 10
2008-11-14, みかん, 20
2008-11-15, めろん, 30
EOF;

$csv_arr = array(
           array("2008-11-13", "りんご", "10"),
           array("2008-11-14", "みかん", "20"),
           array("2008-11-15", "めろん", "30")
           );

どうぞ宜しくお願いします。
0855nobodyさん2008/11/16(日) 06:48:23ID:???
foreach (explode("\n", $csv) as $val) {
  $csv_arr[] = explode(",", $val);
}
0856nobodyさん2008/11/16(日) 12:30:43ID:???
$csv_arr = array_map('explode', array_fill(0, count(file('a.csv')), ','), file('a.csv'));
08578542008/11/16(日) 13:00:43ID:QRvDYE1C
>>855
そのものずばりの回答ありがとうございます!


>>856
質問が言葉足らずで誤解させてしまい申し訳ないです。
今回の私の質問は、csvファイルからの読み込みではなく、
変数$csvにCSV形式の文字列が入っているという意味で
質問させていただきました。

ただ、ご回答いただいたコードは、ネットで探すサンプルよりも
ワンライナーでとても簡潔にまとめられていて参考になります。
ありがとうございます!
0858nobodyさん2008/11/16(日) 17:35:39ID:???
>>854
$csvに入る内容にもよるが
データに,とか\r\nとか”があった場合の挙動って考えなくて良いの?
厳密なCSV定義からのパースだとしたら今出てる物では不十分

因みに厳密なCSV定義=RFC4180ね
08598542008/11/16(日) 23:14:23ID:QRvDYE1C
>>858
特定のWebページを取得してCSV形式で整形したものが、今回の$csvと
なるので、今回については特殊な文字列が含まれることはありません。

ご指摘された場合も想定しないと予期せぬ不具合につながりますね。
アドバイスありがとうございます。
0860nobodyさん2008/11/16(日) 23:18:21ID:???
それは普通CSV形式とは言わない
0861nobodyさん2008/11/17(月) 09:37:37ID:KhW4/uRq
質問があります
if(1000==(1100/1.1)){echo "ok";}
これでは判定は真にならずokと表示されません
何故ですか

ちなみに
if(1000==(900/0.9)){echo "ok";}
これだと真と判断されてokと表示されます
0862nobodyさん2008/11/17(月) 10:36:30ID:???
>>861
仕様
http://jp.php.net/float
0863nobodyさん2008/11/17(月) 11:01:28ID:KhW4/uRq
>>862
ありがとう御座います
例えばリンク先の例に挙げられているfloor((0.1+0.7)*10) の場合
echo floor((0.1+0.7)*10);
とすると結果は7と表示され、
想定される結果である8とは違う事から
リンク先に書いてあるように計算精度に問題がある事が分かりますが

echo 1100/1.1;
とすると1000と表示され、想定された通りの計算結果になります
この値はあてにならないということでしょうか
0864nobodyさん2008/11/17(月) 11:22:13ID:???
ファイルの排他制御って参照しかしない場合でも必要なんですか?
0865nobodyさん2008/11/17(月) 11:25:42ID:???
場合による
0866nobodyさん2008/11/17(月) 12:00:46ID:???
>>863
ならない
■ このスレッドは過去ログ倉庫に格納されています