【PHP】下らねぇ質問はここに書き込みやがれ 13

■ このスレッドは過去ログ倉庫に格納されています
2021/09/09(木) 09:38:43.41ID:eDlF7Xc4M
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ

PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 12
https://mevius.5ch.net/test/read.cgi/tech/1619667579/

次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/03/19(土) 19:42:49.56ID:Jz9s8SFR0
mysqlだと思ってました
確認出来ますかねどこかから
2022/03/20(日) 03:34:28.76ID:PJzlle4Da
>>423
まじか、知らんかった
2022/03/20(日) 09:54:51.30ID:mQY/Vvp+0
簡単な選択肢という点へのレスじゃないの
solite自体はモジュールを有効にするだけでしょ?
2022/03/20(日) 09:55:39.92ID:mQY/Vvp+0
なんでsoになってんだろ
2022/03/20(日) 11:10:51.73ID:4DHwN15Vd
xamppでは結構な前に、mysqlからmariadbに変更になったんじゃないかな
sqliteはただのファイルだから、xamppでもPDOから簡単に使える気がする
2022/03/20(日) 22:49:21.68ID:hQnXKhQ80
実行時のエラーを画面に表示させないかわりにログに吐き出したいのですが、
探し方が悪いのかerror_reportingが見つかるばかりでよく分かりません

どのようにすれば実現できますか?
2022/03/20(日) 23:44:33.14ID:kJ/tleYc0
php.ini ログでぐぐればいいのでは
2022/03/21(月) 01:52:05.78ID:ReDZXCqw0
>>430
ありがとう
2022/03/21(月) 04:01:12.26ID:ZOcxwlgI0
えいえいるー
2022/03/21(月) 07:16:20.70ID:1Zq9yw2r0
phpで取得した日付をデータベースに保存するために、何の関数を使うんでしょうか?
2022/03/21(月) 09:34:41.09ID:FQPswJNc0
使うDBによる
ていうかそんな質問してるってことはSQLの勉強すっ飛ばしてるんだろうから
ORMとかdoctrineとかで調べたほうが良いんじゃね
2022/03/21(月) 10:44:58.61ID:KEZLBWrAd
>>433
https://www.php.net/manual/ja/book.pdo.php
2022/03/21(月) 12:33:57.27ID:1Zq9yw2r0
>>434
sql触るのはほぼ初めてですね。
ありがとうございます。

phpとはまた別物なんですよね。
2022/03/21(月) 12:42:33.00ID:ZOcxwlgI0
すっきりわかるSQL入門第2版が分かりやすかった。おすすめ。

あと自分はPHP7+MariaDB/MySQLマスターブック読んだ。
PHP8にしてたらそのまま動くのかは不明。
2022/03/21(月) 13:06:21.14ID:1Zq9yw2r0
phpで簡易cms的なものを作るにはデータベース必須すね、、、
がんばります
2022/03/21(月) 20:27:54.24ID:1Zq9yw2r0
sqlでテーブル作成するにはこの構文で間違ってるでしょうか?
create table tableName(
table1,
table2,
);

xampp使用です
以下エラー文

静的解析:

解析中に 2 個のエラーが見つかりました。

認識できないデータ形式。 (near "," at position 31)
カンマか閉じる括弧があるべきです。 (near "table2" at position 34)
SQL クエリ: コピー

create table tableName( table1, table2, )

MySQL のメッセージ: ドキュメント

#1064 - SQL構文エラーです。バージョンに対応するマニュアルを参照して正しい構文を確認してください。 : '
table2,
)' 付近 2 行目
2022/03/21(月) 20:31:42.83ID:1iHLA9O+d
table2の後のカンマが余分
2022/03/21(月) 21:09:44.05ID:1Zq9yw2r0
カンマ排除しても変化なしでした、、、
2022/03/21(月) 21:12:26.26ID:hqVGHGm5M
型も書かないとダメじゃないかな
2022/03/22(火) 04:32:12.72ID:Vsg5BiCzr
さすがにテーブルの作り方くらいこんなところで聞かないでググればわかるだろ
なんでここでレス待って無駄な時間かけてるのか
質問スレだから別にいいんだが
2022/03/22(火) 06:33:01.42ID:FjT2kSkU0
すみません 調べる能力もないので
調べたとおりやってもエラー出るもんですから
2022/03/22(火) 09:40:36.98ID:Vsg5BiCzr
そっか
2022/03/22(火) 10:57:47.69ID:qiHhH37I0
そもそもSQLをなんだと思ってるんだ?

table1やらtable2やらを、create table文のそこに書いて何をしたいんだ?
どこのサイトにそこに"table"(名?)を入れろって書いてあるんだ?
せめて"column"とだけ入れてエラーになったんなら理解出来なくもないけど
意味わからん。読まずにコピペだけして全部がうまく行くと思うなよ
2022/03/22(火) 13:06:14.45ID:FjT2kSkU0
うっす
あとで来ます
448デフォルトの名無しさん (ワッチョイ 1302-yL30)
垢版 |
2022/03/23(水) 20:10:40.92ID:6/u1gnhe0
ECサイト作りながらphpの学習してます。
MVCフレームワークの件で、
Controllerと、Modelの切り分けがよくわかっていません。

例えば、処理に対するものは全部Modelに組み込んで、
Controllerには、require_onceなど他のファイルを読み込ませるだけではいけないのでしょうか?

サンプルを見るとセッションや、データベース接続などは、
Controllerに書かれているものもあります。

結構ここらは曖昧なもの、きっちり切り分けできないものでしょうか?
2022/03/23(水) 21:05:09.72ID:k5Zp6smO0
質問です
phpmyadminを使って登録データを書き換える場合はsql文を使う感じでしょうか?
10年くらい前に使ってたんですが、uiから操作もできた気がします
2022/03/23(水) 22:22:39.11ID:/pNbKJbmr
できます
2022/03/23(水) 23:25:16.26ID:k5Zp6smO0
dもっす
2022/03/23(水) 23:31:34.77ID:6/u1gnhe0
関数になっているものは、modelにあげればいいのかな。
関数になってないものは、Controllerで。。
2022/03/24(木) 03:13:37.21ID:wr7gmjuR0
>>448
Ruby on Rails では、Model がデータベース、View がHTML など。
Controller がそれら以外の雑多なもの、routing など

他に、サービスオブジェクトは、fat model を避けるために、特定の機能を抜き出す

サービスオブジェクトがアンチパターンと思うなら、
concern に、1つの関心事・責務をまとめる

歴史的経緯では、fat controllerを避けるため、処理をモデルに詰め込んだ。
次に、fat modelを避けるため、サービスオブジェクト・concernが登場した

フォームオブジェクトはHTMLのForm をまとめる

他に、form presenter, model presenter は、decorator の一種だが、
View から、複雑なコード部分を抜き出す
2022/03/24(木) 06:31:15.00ID:amoIRmUua
スレ違いも守れない身勝手なクズ
2022/03/24(木) 08:40:06.48ID:i96xuoDh0
これがホントのすれ違い
2022/03/25(金) 06:36:29.43ID:/HPMPID90
データベースの操作は、pdoというものを使うのが基本なんすか?
2022/03/25(金) 07:13:01.47ID:+mvdxmyUM
DBはpdoで使うけどWEBアプリ作る時はWEBアプリフレームワークが用意してるDB用ライブラリで使う。
WEBアプリフレームワークが用意してる DB用ライブラリといってもdoctrine使ってるだけだったりする。
DB接続管理しないとDB接続切断漏れでメモリ使用量が増えて接続出来なくなることがあるからそういうのも管理してるDB用ライブラリを使うと良い
2022/03/25(金) 07:23:42.39ID:/HPMPID90
ありがとうございます
生のphpなのでpdo使いますです
2022/03/25(金) 09:02:55.24ID:f5febzbDd
>>456
そう
プリペアドステートメントについてよく学習するといいよ
https://www.php.net/manual/ja/pdo.prepare.php
2022/03/25(金) 18:00:35.30ID:j4lS34YJ0
$fp = fopen("unko.txt","r") or return;

ってやりたいんだけど、当たり前だけど式じゃないから
これ出来ないじゃん?
で、質問だけど、PHPに 「リターンする式」 ってある?
2022/03/25(金) 18:11:57.98ID:FU08ODZm0
無名関数
2022/03/25(金) 19:42:33.75ID:E8AHZ+++0
>>453
ありがとうございました。
2022/03/25(金) 19:43:10.27ID:E8AHZ+++0
ログインのページで
session_start();
でセッションIDが発行され、サーバー側に保存、クライアントのブラウザにセッションIDの値がクッキーに保存されることは理解していますが?

そのあとの画面遷移で、
再度
session_start();
と記述されています。

これって?画面遷移したら、新たなセッションIDが発行されるということでしょうか?
それとも、既にセッションIDが廃棄されてない状態で、
session_start();が実行する場合は、別の意味になるのでしょうか?
2022/03/25(金) 19:55:52.59ID:Sxm//NSL0
画面遷移したらそもそも前の画面と今の画面とは処理的に何もつながりが無いから
セッションで同じユーザーですよという判別をする訳なのだがw
一度セッション開始していれば、セッションのクッキーの有効期限が過ぎてなければ残っているから
この辺の仕組みが分かってないなら、根本的な所から勉強した方が良いのでは?
2022/03/25(金) 20:14:25.57ID:E8AHZ+++0
ありがとうございます。

最初のページで
session_start(); はセッションIDの発行。

画面遷移後の、
session_start(); は既存のセッションIDの継続。

のような意味合いで捉えればいいでしょうか? 
2022/03/25(金) 21:20:27.36ID:f5febzbDd
>>465
そうだよ
session_start — 新しいセッションを開始、あるいは既存のセッションを再開する
https://www.php.net/manual/ja/function.session-start.php

簡単に言えば、セッションの機能を使いたい場合は、そのすべてのページで、
最初にsession_start()を実行することになる

参考までに、新たなセッションIDの発行は、session_regenerate_idを使う
たとえば、ログインページなどで、セキュリティのためセッションIDを別のものに切り替える
2022/03/25(金) 21:49:53.02ID:E8AHZ+++0
ありがとうございます。
すごくわかりやすかったです。
2022/03/26(土) 00:39:12.54ID:t422X2fY0
いえいえ
2022/03/27(日) 08:52:49.93ID:2Abk94v90
デバッグ用の関数を考えています
変数の中見を見た後、die()で止めるにはどのようにすれば良いでしょうか?
以下だと、returnで終わってしまいますのでdie()が実行されませんでした。

function v($var){
return var_dump($var);
die();
}
2022/03/27(日) 09:30:34.37ID:Jy1Ztdu30
普通にデバッガ使えば?
2022/03/27(日) 09:37:32.03ID:2Abk94v90
>>470
そうですね・・・
全然うまく使いこなせなくて、変なことやっていましたが
やはりそちらをちゃんと勉強すべきだと思いました
ありがとうございます、目が覚めました!
2022/03/27(日) 11:19:54.18ID:px6SVueC0
var_dumpに戻り値ないのになぜreturnしたいのか
2022/03/27(日) 11:50:38.48ID:2Abk94v90
>>472
すいません!
returnがそもそも間違ってただけでした、お騒がせしました
return消したら全部解決しました。すいませんでした。
2022/03/27(日) 12:13:35.23ID:o0+t6QgP0
いいってことよ
475デフォルトの名無しさん (アウアウウー Sacd-bb9c)
垢版 |
2022/03/27(日) 17:56:14.40ID:TscJEPL7a
データベースを使わずに無理やり返信機能を作ろうとしてるんですが、やっぱりまずいでしょうか?

なんでもデータベースを使うのは嫌なんですが、使わないとクラッカーの攻撃の的になって迷惑をかけると書いてあったんですが
デフォルトのやり方に沿ってデータベースを使わないと駄目なんでしょうか?
2022/03/27(日) 23:50:25.02ID:TRkpHzjA0
>>461
それ違うくない?
やりたいのは or return 的なものであって
2022/03/28(月) 01:20:54.04ID:ee0nwmF40
>>475
別にファイルなどに保存(大昔の掲示板のデータなどはそうやってた)でもいいのだけど
ファイルだとアクセスが競合すると意図しない結果になる可能性があるのでロックしたりやら何気に面倒なので
今ではちょっとしたデータでもDBに保存するのが普通になっているだけ
Sqliteとかでも導入した方が良いかと思うしLinuxならmysqlとか簡単に入れられるし何故DBを避けるのか?
SQLが全く分からないようなレベルだとしたら、ファイルでやるのも難しいのでは?
2022/03/28(月) 07:44:22.82ID:bggr0gZp0
ブラウザは内部的に、Sqlite を使っている

そういうアプリは無数にある
2022/03/28(月) 08:40:30.91ID:e+R9J1ENr
DB使えない縛りとか地獄だろw
2022/03/28(月) 09:24:21.21ID:Z3wXEIoi0
ファイルシステムは広義のデータベース
積極的に使おう
2022/03/28(月) 13:15:04.75ID:65kZIKhN0
クライアントから送られてくるCSVを処理してCSVで返す仕事をしています
482デフォルトの名無しさん (アウアウウー Sacd-bb9c)
垢版 |
2022/03/28(月) 16:39:58.25ID:KVxU4Wgwa
>>477
DBが嫌なのは実装が面倒だからですね
返信ボタンとCSVファイルだと管理が楽だと思うので
2022/03/28(月) 17:32:41.80ID:aTlav5QD0
やりたい事がそれで完結するなら、
それで良いんじゃないか?
2022/03/28(月) 19:09:14.66ID:AcTRGxgL0
それでいいんならいいんじゃね
ワイだったら後からの苦労が死ぬほどつらそうで嫌だ
2022/03/29(火) 10:39:38.02ID:5ZnN2+IRM
xdebugって本番環境に入れても良いの?
リモートipアドレスでデバッグ環境が有効になるから問題無い?
2022/03/29(火) 10:43:32.61ID:75Mdmk0b0
ふつうはいれないよー
2022/03/29(火) 11:10:00.92ID:5ZnN2+IRM
入れたらダメなのね
ちなみに本番環境に入れたらとんでもない事態っておこるものなの?
想像力が欠如していてどうなってしまうかわからないです
2022/03/29(火) 11:23:48.03ID:3wCJ+Lll0
仮に脆弱性があった場合、
通常本番に入れるべきではないとされるものを開発側の理由で入れてた責任を取れるならいいんじゃね
ipスプーフィングされちゃいましたとかもあるし、普通セキュリティリスクは極力避けるものだと思うよ
2022/03/29(火) 11:31:07.52ID:N66wcHnK0
その本番環境がなんだか分からないが
一般論として、本番に穴が空く可能性は極力排除
2022/03/29(火) 16:57:15.91ID:snERMp370
同じphpファイルにある、フォームからデータをPOSTで受け取り、
データベースにデータを登録したあと、ブラウザリロードすると重複してしまうという事象。

一つは、header関数で、自分自身のファイルへロケーション設定させる方法。

https://www.php.net/manual/ja/functions.returning-values.php

あとトークンを使う方法。

https://techacademy.jp/magazine/41842

どっち使っても問題ないですか?
どっち使っても同じなら、簡単なロケーション設定で対応したいと思いますが、ご意見ありますか?
2022/03/29(火) 17:45:14.13ID:g2SW/NK60
>>485
xdebugはかなり重いしport9000とかを開けないといけないので
どっちにしてもあり得ない

>>490
上のURLは間違っているし、下にサンプルコードまであるのだから下の方法で良いのでは?
セッション使わずにやることも可能ではあるけど、ユーザーを認識した処理をするなら
どっちにしてもセッションは必須なので
2022/03/30(水) 06:52:25.55ID:YVzwLlXSM
xdebugの件ありがとうございました
サーバ移行先に少し機能を付け加えたものが動かない部分があるので、
本番運用するまでに限りxdebugを有効にするのはやっても良いでしょうか?
2022/03/30(水) 08:11:04.90ID:5+ozggRTa
関係者に了承もらって勝手にやれよ。終わったら無効にしとけよ
494デフォルトの名無しさん (ワッチョイ 5e10-5yPK)
垢版 |
2022/03/30(水) 11:12:36.66ID:m5cOXdIB0
これから3年ぐらいの運用を見越して開発する場合、PHP8が必須ですかね?
普段はLaravelで開発しているのですが、8か9かで悩んでいます。
なぜ悩むかと言うと、PHP7系の情報量が多いからです。
未だにPHP5を使えるようにしているレンサバもあるし、
PHP7でも大丈夫ではないか?と思う反面、セキュリティも気になります。

目的は個人サイト用ですが、仕事でこれから開発する人は
どのバージョンを選択するか教えて下さい。
2022/03/30(水) 11:23:44.28ID:pW4vMWner
個人なら好きなの使えばいい
どうせ世の中ゴミだらけのphpだし
セキュリティなんてバージョンだけでどうにかなるようなものではない
2022/03/30(水) 11:44:32.48ID:SZ4iQ/We0
>>490
参考までに、Ruby on Rails 6 で2重送信を防ぐには、
data: { disable_with: '送信中...' }
と書くだけだったが、

Rails 7 からは、CSS で制御する方式に変わった

<button class="btn btn-primary">
<span class="show-when-enabled">送信</span>
<span class="show-when-disabled">送信中...</span>
</button>

button .show-when-disabled { display: none; }
button[disabled] .show-when-disabled { display: initial; }

button .show-when-enabled { display: initial; }
button[disabled] .show-when-enabled { display: none; }
2022/03/30(水) 11:48:58.08ID:ghU4o1Ed0
あまり知識なさそうな人なら、情報量が多いバージョン使うのが良いのでは?
ご自身もそう考えていそうだし、背中押してあげようか?
2022/03/30(水) 11:50:31.65ID:SZ4iQ/We0
phpMyAdmin も、ブラウザでデータベースを見れて便利だから、

本番へ入れる香具師も多いけど、脆弱性を狙われる
2022/03/30(水) 13:54:06.58ID:bMF+K+xO0
webサイトの攻撃を見れる立場だと、phpmyadmin狙ったクエリが多いことに気付けるよねw
あれは最初ビビったw
2022/03/30(水) 23:14:02.09ID:1ooXHKRQ0
オライリーの本にでてたのだけど。サンプルが間違ってるのかな?

次の$dinnerの値がfalseなのに、if条件がtrueになるのは何故?

if($dinner == 'Braised Scallops') {
print "Yum! I love seafood.";
}
2022/03/30(水) 23:21:03.84ID:1ooXHKRQ0
ちなみに以下なら、if条件はfalseになる。

if($dinner === 'Braised Scallops') {
print "Yum! I love seafood.";
}

リテラルと「false」で「==」の比較をするとtrueが返ってくるの??
2022/03/31(木) 04:42:22.69ID:8HckyYNU0
その上のコードが無いと判断出来んわ
2022/03/31(木) 04:48:46.10ID:oh99lNSH0
if(isset($_POST['input1'])==false){$_POST['input1']=false;}
if(isset($_POST['input2'])==false){$_POST['input2']=false;}
if(isset($_POST['input3'])==false){$_POST['input3']=false;}
$input_set1=0;
if(true == $_POST['input1']){ $input_set1 = $_POST['input1'];}
else {$input_set1 = 0;}
if(true == $_POST['input2']){ $input_set2 = $_POST['input2'];}
else {$input_set2 = 0;}
if(true == $_POST['input3']){ $input_set3 = $_POST['input3'];}
else {$input_set3 = 0;}
$new_messages = $input_set1;
$max_messages = $input_set2;
$dinner = $input_set3;
2022/03/31(木) 04:49:36.14ID:oh99lNSH0
print <<<HTML_FORM
<form method="POST" action="$_SERVER[PHP_SELF]">
<ul>
<li>10,abcdef<input type="text" name="input1" >
<li>abcdef<input type="text" name="input2" >
<li>Braised Scallops<input type="text" name="input3" >
<button type="submit">送信する</button>
</form>
HTML_FORM;
print "$new_messages <br>";
print "$max_messages <br>";
print "$dinner <br>";
print "This is always printed.<br>";
if ($new_messages == 10){
print "You have ten new messages.<br>";
}
if($new_messages == $max_messages) {
print "You have the maximum number of messages.<br>";
}
if($dinner == 'Braised Scallops') {
print "Yum! I love seafood.";
}
505デフォルトの名無しさん (ワッチョイ 9202-tbOq)
垢版 |
2022/03/31(木) 04:59:01.80ID:oh99lNSH0
オライリーの「はじめてのphp」から。
の一部のコードを参考に、フォームからの入力で条件を確認しています。

3つ目のフォームが空の場合、$dinnerはfalseになるのですが。
($dinner == 'Braised Scallops')の場合、trueになるのです。

これまで、==で比較することなかったので、その結果に違和感があるところです。
2022/03/31(木) 06:30:54.35ID:PtLOqfk30
>>505
$dinnerはfalseじゃなくて0じゃね?

https://www.php.net/manual/ja/migration80.incompatible.php
8系で処理結果が変わってる
2022/03/31(木) 09:00:16.12ID:oh99lNSH0
0はfalseではないのですか、、。
調べてみます。ありがとうございます。
2022/03/31(木) 09:03:42.28ID:/ZasjnC50
こんなの気にしながらコード書きたくないからstrcmp系一択だわ
2022/03/31(木) 09:25:52.15ID:oh99lNSH0
ちなみに、phpのバージョンは7系でした。

# php -v
PHP 7.3.28 (cli) (built: Apr 27 2021 17:19:33) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.28, Copyright (c) 1998-2018 Zend Technologies
510デフォルトの名無しさん (ワッチョイ 9202-tbOq)
垢版 |
2022/03/31(木) 09:32:05.79ID:oh99lNSH0
確かに 0 と false では挙動が違いますね。
すごくもやっとします。
511500 (ワッチョイ 9202-tbOq)
垢版 |
2022/03/31(木) 10:03:03.45ID:oh99lNSH0
自己解決しました。
https://so-zou.jp/web-app/tech/programming/php/grammar/operator/comparison.htm

==で比較するとき、
整数0 と 文字列'PHP' で true
整数1 と 文字列'PHP' で false

のようです。気味わるいですが、そうみたいです。
2022/03/31(木) 10:37:56.08ID:PtLOqfk30
>>511
それじゃ解決しないよ
教科書との違いは、数値形式の文字列のキャストの話
https://www.php.net/manual/ja/language.types.numeric-strings.php

あと参考にするのは適当なブログじゃなくて、公式見たほうがいい
2022/03/31(木) 11:19:04.53ID:oh99lNSH0
ありがとうございます。
でも、そうなのかなあ。
==の比較の場合、数値0 と false は結果が異なる。
っていうだけの話のような。。
2022/03/31(木) 11:56:54.49ID:PtLOqfk30
君の最初の疑問は
if(0=='php')
の挙動が本と実機で異なるってことなんで、まずそこから理解するといいよ

で、この比較は
https://www.php.net/manual/ja/language.operators.comparison.php
の「さまざまな型の比較」にあるように
> 文字列やリソースを数値に変換し、算術演算を行います

この数値変換が8以降で挙動が変わったってのが回答

ちなみに参考にしたブログは 0=='php' が TRUE なので、現行のphp Active Support バージョンにおいては間違った情報を垂れ流していることになる
2022/03/31(木) 12:05:50.04ID:PtLOqfk30
> の挙動が本と実機で異なるってことなんで、まずそこから理解するといいよ

ん?違うのか?

単純に
if(0=='php')
が TRUE になるのが気持ち悪いってことなんかな?

それなら、8系で修正されて直感と揃ったぞってことだね
2022/03/31(木) 13:27:33.73ID:3F1JJOSM0
>>496
jQuery で、ボタンをenable/disable に切り替える例

<button id="btn_1" class="btn btn-primary">
<span class="show-when-enabled">送信</span>
<span class="show-when-disabled">送信中...</span>
</button>

<button id="btn_2">送信ボタンをenable にする</button>

<style>
button .show-when-enabled { display: initial; }
button[disabled] .show-when-enabled { display: none; }

button .show-when-disabled { display: none; }
button[disabled] .show-when-disabled { display: initial; }
</style>

$( function ( ) {
$( '#btn_1' ).on( 'click', function ( event ) {
$( this ).prop( 'disabled', true ); // disable にする
} );

$( '#btn_2' ).on( 'click', function ( event ) {
$( '#btn_1' ).prop( 'disabled', false ); // enable にする
} );
} );
2022/03/31(木) 14:28:47.55ID:oh99lNSH0
>>515

>if(0=='php')が TRUE になるのが気持ち悪いってことなんかな?
そうです。そうです。

Javascriptだと。
if(0 == 'php'){
document.write("this is true");
}else{
document.write("this is false");
}
//"this is false"が表示されるのが普通なので。

もやっとしてましたが、ver8では改善されているのですね。

詳しい説明ありがとうございました。
2022/03/31(木) 15:05:21.39ID:3F1JJOSM0
JavaScript では、== は使わない方がよい。
常に厳密等価演算子、=== を使うべき

型違いは危険だから、TypeScript が出来た

こういうバグは、全部テストできないから厄介
2022/03/31(木) 16:35:59.57ID:oh99lNSH0
>>518
>JavaScript では、== は使わない方がよい。
>常に厳密等価演算子、=== を使うべき

これはPHPには当てはまらないのですか?
もっともなんとなくphpでも、比較するときは===を使ってますけど。
520デフォルトの名無しさん (オッペケ Sr79-LzaM)
垢版 |
2022/03/31(木) 19:11:06.94ID:FlN4IEP5r
タイトルのみ
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>
画像と画像の下にタイトル
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>
画像と画像の右にタイトル
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>
<ul><li>〜</li></ul>

上記のように出力しているのですが、ul を1個ずつにする方法を教えてください、どうしてもわかりません。
521デフォルトの名無しさん (オッペケ Sr79-LzaM)
垢版 |
2022/03/31(木) 19:13:16.58ID:FlN4IEP5r
$block_per_page = 2; //ページあたりブロック件数
$rss_per_block = 18; //ブロックあたりRSS件数
//RSS読み込み
$rss_per_page = $block_per_page * $rss_per_block; //ページあたりRSS件数
$rss_offset = ($current_page - 1) * $rss_per_page; //RSSオフセット
$sql = 'SELECT * FROM rss_feed ORDER BY date DESC LIMIT ?,?';
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $rss_offset, PDO::PARAM_INT);
$stmt->bindParam(2, $rss_per_page, PDO::PARAM_INT);
$stmt->execute();
$rss_items = $stmt->fetchAll(PDO::FETCH_OBJ);
//RSS表示
for ($i = 0; $i < $block_per_page; ++$i) {
for ($j = 0; $j < $rss_per_block; ++$j) {
$item_index = $i * $rss_per_block + $j;
if ($item_index >= count($rss_items)) {
break;}
$item = $rss_items[$item_index];
$title = "<a href=\"{$item->link}\">{$item->title}</a>";
if (empty($item->img)) {
$img = 'wp-content/uploads/2021/12/EXt1cESWAAAwdOY.jpg';
} else {
$img = $item->img;}
$image = "<a href=\"{$item->link}\"><img src=\"{$img}\" width=\"100\"></a>";
if ($j >= 0 && $j <= 4) {
echo "<li class=\"sitelink\">{$title}</li>"; // タイトルのみ
} elseif ($j >= 5 && $j <= 8) {
echo "<li class=\"sitelink2\">{$image}<br>{$title}</li>"; // 画像と画像の下にタイトル
} elseif ($j >= 9 && $j <= 12) {
echo "<li class=\"sitelink3\">{$image}{$title}</li>"; // 画像と画像の右にタイトル
}}
2022/03/31(木) 21:19:45.99ID:pB1E+d/ld
PHP8からの「文字列と数値の比較」は、この公式ページがわかりやすい
https://www.php.net/manual/ja/migration80.incompatible.php

(厳密でないやり方で)数値と非数値文字列を比較する場合、 数値を文字列にキャストし、文字列と比較するようになりました。
数値と数値形式の文字列の比較は、以前と同じ振る舞いをします。
注意すべきなのは、これによって、 0 == "not-a-number" が false と見なされるようになったことです。
2022/03/31(木) 21:32:14.98ID:pB1E+d/ld
つまり、PHP7では、
(厳密でないやり方で)数値と非数値文字列を比較する場合、文字列を数値にキャストし、数値と比較していた。
これによって、 0 == "not-a-number" が ture と見なされていた。

0 == "not-a-number"
この式は、次のようにキャストされて比較される
PHP7・・・0 == 0・・・true
PHP8・・・"0" == "not-a-number" ・・・false
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況