!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ
PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 13
https://mevius.5ch.net/test/read.cgi/tech/1631147923/
次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
探検
【PHP】下らねぇ質問はここに書き込みやがれ 14
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f97-W3aP)
2022/09/20(火) 16:46:23.39ID:Sb2Kpzh+02デフォルトの名無しさん (スッップ Sdbf-ZAtA)
2022/09/23(金) 12:52:58.86ID:hnZdjJ3nd 1乙
3デフォルトの名無しさん (ワッチョイ 2701-tX/F)
2022/09/24(土) 13:08:46.11ID:BHAYvVt70 >>1
8.2
8.2
4デフォルトの名無しさん (ワッチョイ 1251-w3Il)
2022/09/28(水) 15:20:22.87ID:kZGixsXA0 try catch構文がなぜか機能しない(´・ω・`)
単純なゼロ除算をキャッチさせてみるだけでも、catch構文のほうに行かず停止してしまう。
try {
$num = 5/0;
} catch ( Exception $ex ) {
//例外時の処理
}
JavaやC#だったら、こういうふうに書けばどんな種類の例外でも拾ってくれますが、PHPの場合ちょっと違うのですか?
単純なゼロ除算をキャッチさせてみるだけでも、catch構文のほうに行かず停止してしまう。
try {
$num = 5/0;
} catch ( Exception $ex ) {
//例外時の処理
}
JavaやC#だったら、こういうふうに書けばどんな種類の例外でも拾ってくれますが、PHPの場合ちょっと違うのですか?
5デフォルトの名無しさん (ワッチョイ 527c-tX/F)
2022/09/28(水) 15:46:24.05ID:Jk2txA1W0 \Exceptionにしたら動くかも?
6デフォルトの名無しさん (ワッチョイ 1251-w3Il)
2022/09/28(水) 15:59:48.05ID:kZGixsXA0 >>5
ありがとうございます。動きました!
PHPだと例外の型の区別方法がよく分からないです。デバッグしてみると全部Exception型?
Javaとかだったらcatch構文で、例外オブジェクトの型の違いでこうやって分けられたのですが。
catch(HogeException) {
//HogeExceptionの例外処理
} catch(FugaException) {
//FugaExceptionの例外処理
}
PHPの場合どうやって分岐しますか?
エラーコードやエラーメッセージを拾って分ける処理をさしあたり書いて意図したとおりに動いてもいますが、これが正しいやり方ではないような気がします。
ありがとうございます。動きました!
PHPだと例外の型の区別方法がよく分からないです。デバッグしてみると全部Exception型?
Javaとかだったらcatch構文で、例外オブジェクトの型の違いでこうやって分けられたのですが。
catch(HogeException) {
//HogeExceptionの例外処理
} catch(FugaException) {
//FugaExceptionの例外処理
}
PHPの場合どうやって分岐しますか?
エラーコードやエラーメッセージを拾って分ける処理をさしあたり書いて意図したとおりに動いてもいますが、これが正しいやり方ではないような気がします。
7デフォルトの名無しさん (ワッチョイ c761-WvKv)
2022/09/28(水) 18:16:57.90ID:48qufCUu0 phpでも複数catch出来る
ゼロ除算を他の例外と分けたいならDivisionByZeroErrorやArithmeticErrorあたり
ゼロ除算を他の例外と分けたいならDivisionByZeroErrorやArithmeticErrorあたり
8デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)
2022/09/28(水) 18:34:37.92ID:o0cHd3Tq0 公式覗いてみた?
一応動くやつ書いてみた
class MyException extends Exception { }
class MyOtherException extends Exception { }
class Test {
public function testing() {
try {
// throw new MyException();
throw new MyOtherException();
} catch (MyException $e) {
var_dump(get_class($e));
} catch (MyOtherException $e) {
var_dump(get_class($e));
}
}
}
$foo = new Test;
$foo->testing();
一応動くやつ書いてみた
class MyException extends Exception { }
class MyOtherException extends Exception { }
class Test {
public function testing() {
try {
// throw new MyException();
throw new MyOtherException();
} catch (MyException $e) {
var_dump(get_class($e));
} catch (MyOtherException $e) {
var_dump(get_class($e));
}
}
}
$foo = new Test;
$foo->testing();
9デフォルトの名無しさん (ワッチョイ 1251-w3Il)
2022/09/29(木) 09:00:43.80ID:+9krd1sq0 >>7-8
ありがとうございます。それができることは分かりました。
とりあえず\Exceptionで一緒くたにcatchしてみてデバッグし、出てきた例外の「正確な型名」の調べ方が分からないです。
「PHP 例外 型 種類」のようにぐぐっても、ありがなゼロ除算の例外の型名すら、いま教えてもらうまでわからなかったです。
JavaならArithmeticException、C#ならDivideByZeroException、といった型名はちょっと調べればわかりますが、PHPの場合はその資料が無いようで。
ありがとうございます。それができることは分かりました。
とりあえず\Exceptionで一緒くたにcatchしてみてデバッグし、出てきた例外の「正確な型名」の調べ方が分からないです。
「PHP 例外 型 種類」のようにぐぐっても、ありがなゼロ除算の例外の型名すら、いま教えてもらうまでわからなかったです。
JavaならArithmeticException、C#ならDivideByZeroException、といった型名はちょっと調べればわかりますが、PHPの場合はその資料が無いようで。
10デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)
2022/09/29(木) 09:08:50.12ID:aAavqPwL011デフォルトの名無しさん (ワッチョイ 1251-w3Il)
2022/09/29(木) 10:11:17.58ID:+9krd1sq012デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2022/09/29(木) 12:31:32.34ID:cPkvua8F0 >>11
PHPは公式が素晴らしくよく出来てるから、新参素人がQiita等にイキって書く意味がなく、ググッてもヒットしない。
だから、君のレベルなら、まず公式を全部頭から一通り読むのが一番早いよ。(下の例とその下のNotesも含めて)
数日かかるかもしれないが、急がば回れが完全に成立する。
ちなC#もほぼ公式しか要らないほどよく出来てはいるが、あれはリファレンスであって、頭から読む読み物としては成立してない。
これはJS(MDN)もで、MDNは地味に読み物ページも充実しつつあるが、一部逆にリファレンスとしては使いにくくなってる面もある。
Javaの状況は知らんが、そもそも出所不明のコード例をググる必要がある世界観が異常だと気づくべき。
この点はPHPが完全に正しい。
PHPは公式が素晴らしくよく出来てるから、新参素人がQiita等にイキって書く意味がなく、ググッてもヒットしない。
だから、君のレベルなら、まず公式を全部頭から一通り読むのが一番早いよ。(下の例とその下のNotesも含めて)
数日かかるかもしれないが、急がば回れが完全に成立する。
ちなC#もほぼ公式しか要らないほどよく出来てはいるが、あれはリファレンスであって、頭から読む読み物としては成立してない。
これはJS(MDN)もで、MDNは地味に読み物ページも充実しつつあるが、一部逆にリファレンスとしては使いにくくなってる面もある。
Javaの状況は知らんが、そもそも出所不明のコード例をググる必要がある世界観が異常だと気づくべき。
この点はPHPが完全に正しい。
13デフォルトの名無しさん (ワッチョイ dee7-tX/F)
2022/09/29(木) 20:16:25.66ID:E6cxSExy0 実機環境がPHP7.3のプロジェクトのおしごとがあるんだけど
WindowsのXAMPPは 7.4 と 8.1 しかない
ちょいとPHPUNITを動かす用のローカルのPHPは 7..4 でもいいよね?
WindowsのXAMPPは 7.4 と 8.1 しかない
ちょいとPHPUNITを動かす用のローカルのPHPは 7..4 でもいいよね?
14デフォルトの名無しさん (ワッチョイ 527c-tX/F)
2022/09/29(木) 20:53:29.90ID:D9meFc200 vagrant+virtualboxなりdockerなり仮想環境でも作った方が良さそうだけどね
15デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)
2022/09/29(木) 21:14:41.27ID:aAavqPwL016デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 16:30:44.38ID:anKKL5Vh0 入力された値が正しいかどうかをデバックしているのですが、
左辺と右辺の変数の値の評価が期待しているものと違うことを確認しました。
6番目のリストは「1」となることを期待していますが、
そうはなりませんでした。
なぜ、そうなってしまうか、想定できそうな原因ありますでしょうか。
ちなみにphpのバージョンは7.3になります。
-----
phpコード
<pre>
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".$pw;
print "<li>".$_POST['pass'];
print "<li>".($pw===$_POST['pass']);
print "</ul>";
</pre>
-----
ブラウザの表示
・1234
・1234
・1
・test
・test
・
-----
左辺と右辺の変数の値の評価が期待しているものと違うことを確認しました。
6番目のリストは「1」となることを期待していますが、
そうはなりませんでした。
なぜ、そうなってしまうか、想定できそうな原因ありますでしょうか。
ちなみにphpのバージョンは7.3になります。
-----
phpコード
<pre>
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".$pw;
print "<li>".$_POST['pass'];
print "<li>".($pw===$_POST['pass']);
print "</ul>";
</pre>
-----
ブラウザの表示
・1234
・1234
・1
・test
・test
・
-----
17デフォルトの名無しさん (ワッチョイ dee7-tX/F)
2022/09/30(金) 16:58:56.18ID:tV+EdovX018デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 17:15:04.25ID:anKKL5Vh0 ありがとうございます。
こういうことでしょうか?
実行すると以下のようになります。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>"."---".$pw."---";
print "<li>".$_POST['pass'];
print "<li>".($pw===$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・---test---
・test
・
ちなみに以下のように変えても結果は変わりません。
print "<li>".($pw===$_POST['pass']);
↓
print "<li>".($pw==$_POST['pass']);
こういうことでしょうか?
実行すると以下のようになります。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>"."---".$pw."---";
print "<li>".$_POST['pass'];
print "<li>".($pw===$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・---test---
・test
・
ちなみに以下のように変えても結果は変わりません。
print "<li>".($pw===$_POST['pass']);
↓
print "<li>".($pw==$_POST['pass']);
19デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2022/09/30(金) 17:18:39.83ID:3aBoBWM+0 >>16
宿題は自分でやれ
宿題は自分でやれ
20デフォルトの名無しさん (ワッチョイ dee7-tX/F)
2022/09/30(金) 17:22:10.31ID:tV+EdovX0 >>18
POST側も確認しなきゃ意味ないだろ
POST側も確認しなきゃ意味ないだろ
21デフォルトの名無しさん (ワッチョイ 527c-tX/F)
2022/09/30(金) 17:22:47.09ID:NBzDpu1o0 bin2hex($pw)
と
bin2hex($_POST['pass'])
で表示してみたら違いが分かるかも?
と
bin2hex($_POST['pass'])
で表示してみたら違いが分かるかも?
22デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 17:26:43.54ID:anKKL5Vh0 $_POST側も目印を入れました。
実行すると以下のようになります。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".$pw;
print "<li>"."---".$_POST['pass']."---";
print "<li>".($pw==$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・test
・---test---
・
実行すると以下のようになります。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".$pw;
print "<li>"."---".$_POST['pass']."---";
print "<li>".($pw==$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・test
・---test---
・
23デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 17:31:33.96ID:anKKL5Vh0 >>21
神
ありがとうございます!
違いが出てきました。!!!
bin2hex()を調べてみます。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".bin2hex($pw);
print "<li>".bin2hex($_POST['pass']);
print "<li>".($pw==$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・74657374
・2074657374
・
神
ありがとうございます!
違いが出てきました。!!!
bin2hex()を調べてみます。
----
phpコード
print "<ul>";
print "<li>".$id;
print "<li>".$_POST['login_id'];
print "<li>".($id===$_POST['login_id']);
print "<li>".bin2hex($pw);
print "<li>".bin2hex($_POST['pass']);
print "<li>".($pw==$_POST['pass']);
print "</ul>";
----
ブラウザ表示
・1234
・1234
・1
・74657374
・2074657374
・
24デフォルトの名無しさん (ワッチョイ 527c-tX/F)
2022/09/30(金) 17:36:24.68ID:NBzDpu1o0 0x20(スペース)が入っているね
トリムしてもいいならtrim()で前後のスペースを除去する事も可能
トリムしてもいいならtrim()で前後のスペースを除去する事も可能
25デフォルトの名無しさん (ワッチョイ 96bb-nd6Q)
2022/09/30(金) 17:36:47.30ID:HxNT59pn0 POSTがおかしいね
' test'になってる
' test'になってる
26デフォルトの名無しさん (ワッチョイ d697-uxQy)
2022/09/30(金) 17:44:13.43ID:anKKL5Vh0 おっしゃるとおりです。
フォームに半角スペースが含まれていました。
これに気づかず数時間ハマってました。
ありがとうございました。
----
ブラウザ表示
・1234
・1234
・1
・74657374
・74657374
・1
フォームに半角スペースが含まれていました。
これに気づかず数時間ハマってました。
ありがとうございました。
----
ブラウザ表示
・1234
・1234
・1
・74657374
・74657374
・1
27デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2022/09/30(金) 18:20:29.34ID:3aBoBWM+0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 [Hitzeschleier★]
- なぜリベラルは人気がないのか 斎藤幸平さんが指し示す未来への道筋:朝日新聞 ★2 [少考さん★]
- 【三重】「お金がない。あした払う」タクシー料金払わず、男性運転手を数十発殴った疑い ブラジル人の女を逮捕…容疑を否認 [少考さん★]
- 鈴木農相「おこめ券はお米しか買えないわけではない。例えば卵、味噌、しょうゆ、こうした購入に利用可能」 ★2 [Hitzeschleier★]
- 【日本人の旅行離れ】国内旅行すら行けなくなった……オーバーツーリズムだけじゃない 旅行者減少の異常事態 ★2 [ぐれ★]
- 【伊原剛志】62歳俳優、夫婦別姓に「選択出来るならしたい人はする したくない人はしない 何が問題?」 [少考さん★]
- 【高市物価悲報】ケンタッキーのパーティーセット(5000円)ワロタwwwwww [153490809]
- 黒田前日銀総裁「中国経済、マジでヤバいです」 [237216734]
- 官邸筋「高市総理は電話会談でトランプに米中がうまくやろうとしてるのに邪魔をするなと釘を刺されてかなり落ち込んでいた」 [931948549]
- 【経済制裁】高市、中国に怒りの鉄槌!間接的経済制裁を発動!デフレ中国、万事休すか?! [219241683]
- 彼女と電話すると毎回失敗するんだが
- 「SCORE」←これなんて読むんや?🙋🏡
