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

レス数が950を超えています。1000を超えると書き込みができなくなります。
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/08/02(火) 20:40:22.17ID:kT225iQs0
>>875
ありがとうございます!
できました!!
2022/08/03(水) 00:53:17.80ID:7Hh7TtP40
いえいえ
2022/08/03(水) 06:59:19.85ID:acnAfCtY0
先日と同様にcURLに置き換える件なのですが、
file_get_contentsを使っていたときは以下をパラメータを入れていました。
$Params = array(
'method' => LOAD_TEST,
'shop_id' => (int)$Id,
'values' => array('date' => date('Y-m-d', strtotime($date)), 'Item_id' => (int)$ItemId),
);
しかし、curlで行うとうまくいかないようです。
curl_setopt($cp, CURLOPT_POSTFIELDS, $postdata );
values配列がない状態ならこのままでもいけるのですが、配列いれた場合どうしたらよいですか?
2022/08/03(水) 07:55:44.29ID:acnAfCtY0
このままだとやはり引数にできないようなので、分解して突破させました
2022/08/03(水) 17:50:02.12ID:KEV/JQVYM
テスツ
2022/08/05(金) 06:50:59.44ID:TB9F20bA0
今日の日記
たかが4万件弱のインポートに2.5秒もかかったのでカッとなって、PDOを継承してPyMySQLからexecutemanyを移植したら0.9秒に、更にいったん配列に貯め込むのでなくジェネレーターを使ったら0.7秒になった。とりあえず満足

今日の気付き
イテレーターの最初の要素にちょっと特別な処理を、残りの全部に同じ処理をするのに、最初の一つをcurrent()で取り出してnext()で進めて、それからforeachで回そうとすると、foreachが最初の要素に巻き戻そうとして、イテレーターがarrayやArrayIteratorだと最初の要素がダブって処理されるし、ジェネレーター等だと致命的エラーになる。避けるには for (;$arg = $args->current(); $args->next()) {} みたいな書き方が必要
2022/08/06(土) 06:58:57.48ID:BobfkcfD0
PHPでデータを取得してTableで並べているのですが、
日毎に取得できる数は異なりますが、横3並びずつ展開していきたいです。
このとき例えばデータが5個だと最下段は2個しかないので表示が崩れます。
同じレイアウトを維持したい場合にはどのように出力していくとよいでしょうか?

<table border>
<tr>
<td>1-1</td>
<td>1-2</td>
<td>1-3</td>
</tr>
<tr>(以下繰り返し)
</tr>
</table>
2022/08/06(土) 08:50:14.41ID:bSoznt/K0
>>882
フロントの話はフロントで調整するのが良さそうですけど、phpで調整するのであれば、あまり箇所に空またはダミーデータを入れてやれば良いです
2022/08/06(土) 15:34:51.65ID:Yn2K8aQP0
>>882
PHPでテーブルの整合性を撮るのは難しい。
初心者にはほぼ不可能

初心者はRubyから始めるべき。

こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。
 ↓
Ruby 初心者スレッド Part 67
https://mevius.5ch.net/test/read.cgi/tech/1608837867/
2022/08/06(土) 16:23:38.77ID:Ar28crCLd
データが2個以下の時は空のtd追加するとか、ソース見にくくなるけど
2022/08/06(土) 21:21:05.93ID:hlDXHDkI0
>>881 自己レス
こういうことをやりたいときのために NoRewindIterator ってクラスが用意されてることに、やっと気付いた
2022/08/06(土) 22:59:49.63ID:zZDu6Jm8M
ご返信ありがとうございます。
2022/08/11(木) 10:46:16.89ID:0BxGOtic0
$Url = (($_SERVER['HTTPS'] == 'on') ? 'https://': 'http://').$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
これでエラーにならないサーバーもありますが、エラーがでるサーバーはどう対処しておくべきなのでしょうか?
Warning: Undefined array key "HTTPS"
2022/08/11(木) 11:02:35.41ID:8QSgN6DL0
事前にkeyが存在しているか確認するのが王道
エラーを抑止するのが古の手法
2022/08/11(木) 16:12:08.23ID:UyWxre5N0
https://www.php.net/manual/ja/reserved.variables.server.php

'HTTPS'
スクリプトが HTTPS プロトコルを通じて実行されている場合に 空でない値が設定されます。
と書いてあるのだからhttpなら何も入ってないのでは?
2022/08/13(土) 13:25:21.27ID:SX+jBaiR0
スクラッチのPHPをHTMLに埋め込む(言い方あってるかな?)時、HTMLとPHPのインデント分けろって聴いたんだけど理由はHTMLとPHPでちゃんと区別するためってことでいいの?

あと他に記述ルールってある?
2022/08/13(土) 13:35:24.86ID:Sx7fwAOx0
> HTMLとPHPのインデント分けろって聴いたんだけど理由はHTMLとPHPでちゃんと区別するためってことでいいの?

言ったやつに聞け

> あと他に記述ルールってある?

ビューとロジックを分けて書け
テンプレートエンジンを使うのが普通
2022/08/13(土) 17:07:44.94ID:jipG2YmX0
HTMLとプログラミング言語を混在させるというPHPの発想がそもそものまちがえ。
それにPHPは難解で難しい

初心者にはほぼ理解不可能
初心者はRubyを学んでRuby on Railsを習得するのが一番の近道。


こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。
 ↓
Ruby 初心者スレッド Part 67
https://mevius.5ch.net/test/read.cgi/tech/1608837867/
2022/08/13(土) 19:18:22.22ID:V/oZh/2S0
まちがえ
2022/08/17(水) 01:00:39.74ID:6K+CIS1G0
Rubyとかいうキチガイになる言語やってなくてよかった
とつくづく思う
896デフォルトの名無しさん (ワッチョイ 8206-O3lh)
垢版 |
2022/08/18(木) 10:03:03.04ID:hYUN2Kgy0
初心者です。教えて下さい。
PHPでSQLのWHERE句を作成中ですが、 str_replaceが思うように機能せず
WHERE句の整理ができません。
$sql = str_replace(") )", ")", $sql);

なんで?
2022/08/18(木) 10:53:18.75ID:nlnT+nAS0
rubyでやるなら sql.gsub!("\)\)", ")")

PHPで文字列置換は難しい。
初心者にはほぼ不可能

初心者はRubyから始めるべき。

こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。
 ↓
Ruby 初心者スレッド Part 67
https://mevius.5ch.net/test/read.cgi/tech/1608837867/
2022/08/18(木) 11:43:51.71ID:FZFlEvPV0
>>896
SQL文を動的に作るのはそもそも間違っている
PDO::prepare()を使って値はexecute()でバインドしろ

>>897
は?w
PHPの事知らんのに書き込むなよカス
2022/08/18(木) 12:13:18.20ID:loid3+510
>>898
> SQL文を動的に作るのはそもそも間違っている

ちんばんじーの方ですか?
2022/08/18(木) 12:15:22.58ID:FZFlEvPV0
>>899
お前チンパンジー以下のアメーバだろw
2022/08/18(木) 13:37:35.89ID:zCJ6rmCL0
少なくともphpのスレにRubyの回答を書き込むのは間違っている
2022/08/18(木) 15:00:59.42ID:gpYoA8jL0
pythonに惨敗したからってphpをターゲットにするのは節操無さすぎ
2022/08/18(木) 16:50:58.27ID:7QCRAYLO0
句点Rubyおじなので許してあげてください
2022/08/18(木) 17:47:23.42ID:E6+QXrSta
なぜか日本人ってPHP好きだけど今更whileだとかsubstrなんとか書いてる場合じゃないやろ
2022/08/19(金) 08:15:45.62ID:RKrUVLa60
>>900

やっぱりちんばんじーの方ですね?
2022/08/19(金) 08:30:48.74ID:hrPa3YAYr
Rubyの巣に帰れよ
2022/08/20(土) 01:01:14.29ID:BI8i3IHnM
execute(値)にするのと、
bindvalueにいれてexecute()するのって違いありますか?
2022/08/20(土) 02:40:15.24ID:Pjxfd05Y0
マニュアル見れば書いてるけど
executeの引数でやる場合は全てPDO::PARAM_STRで処理されるってこと
2022/08/21(日) 10:16:00.38ID:gazEjFW30
IFとFORさえ覚えれば、たいていのシステム作れるだろ
2022/08/21(日) 16:24:41.91ID:fxISK6jup
>>909

ちんばんじーの方ですか?
2022/08/21(日) 17:17:30.64ID:zciKMG28M
goto文が無い言語はクソ
2022/08/21(日) 18:58:33.34ID:mTMfTXcwd
システムとは基本的に現実世界の出来事を仮想世界に移したものである
つまり人間の営みの大部分はifとforを表現出来る

俺らはifとforで生きている
2022/08/21(日) 19:49:49.96ID:/n0rYPAY0
時を基準に
垂直に分割するとif
平行に分割するとfor
2022/08/21(日) 19:51:20.83ID:QgiBi/kL0
時を掛け算する少女
2022/08/21(日) 19:51:36.61ID:YkHltzb10
>>910
おじはRubyスレに帰ってろ
Laravelスレで負けすぎてアレルギー出たのかもしれんがw
2022/08/21(日) 20:08:29.83ID:wl7qNZ2S0
gosubはくれ
2022/08/21(日) 22:27:16.72ID:eTjJkk/Q0
もし私が生きていたら死ぬまで生き続ける
2022/08/25(木) 08:10:25.83ID:cG++4RkZM
プログラム初心者で、開発したはいいけどユニットテストってのをどうやればいいかわからない。PHPUnitってやつを勉強すればいいの?
2022/08/25(木) 09:33:17.81ID:GV4MPWBa0
そうです
2022/08/25(木) 11:10:01.39ID:heRMyD+r0
rubyにはTest::Unitというライブラリがある。

gem install test-unit で簡単にインストールできる

require 'test/unit'したら
Test::Unit::TestCaseを継承したクラスを作る。
testで始まるメッソドを作ってassertで結果を比べる。

PHPでユニットテストは難しい。
初心者にはほぼ不可能

初心者はRubyから学習を始めるべき。
そしてRubi on Railsを習得すればPHPは不要

こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。
 ↓
Ruby 初心者スレッド Part 67
https://mevius.5ch.net/test/read.cgi/tech/1608837867/
2022/08/25(木) 11:13:28.18ID:iqB4j8J+0
今日もまだ生きてるぞ
2022/08/25(木) 14:49:04.19ID:hXEJOwJJM
ライブラリ便利そうだけど、今更rubyに変えられないからphpで頑張るわ
2022/08/25(木) 15:32:48.32ID:GV4MPWBaH
PHPでもLaravelとか使えば同じでは?
2022/08/25(木) 16:50:21.79ID:WIenj4cIH
Laravel使えないサーバーもまだ多いのが問題なのかも
2022/08/25(木) 16:54:20.42ID:iqB4j8J+0
昭和十年十二月十日に
ぼくは不完全な死体として生まれ
何十年かかゝって
完全な死体となるのである
2022/08/25(木) 18:51:47.54ID:GV4MPWBaH
Laravel使えないならRailsも使えんだろうしなぁ
ユニットテスト云々以前の問題のような
2022/08/25(木) 20:03:05.12ID:BRCxE1d+0
wordpressに対応しないでください…
2022/08/26(金) 06:38:37.45ID:MROGQRE10
2022/2/3
2022-02-03
スラッシュ形式保存されてる内閣府の祝日CSVですが、
桁揃えてハイフン形式になおしたいです。
どうすればいいですか?
2022/08/26(金) 07:24:25.37ID:MROGQRE10
>>928
自決
2022/08/26(金) 11:55:44.04ID:a/x93rb70
>>928
vsprintf('%d-%02d-%02d', explode('/', '2022/2/3'))
931デフォルトの名無しさん (ワッチョイ 7fda-oOo3)
垢版 |
2022/08/26(金) 13:17:02.67ID:4wt+rugM0
>>930
vsprintfのマニュアルの戻り値の説明に
「 format に基づき、 フォーマットされた文字列の配列を返します。 」とありますが「文字列の配列」という意味がわかりません。
戻り値は文字列で配列ではないように思うのですが違うのでしょうか?

https://www.php.net/manual/ja/function.vsprintf.php#refsect1-function.vsprintf-returnvalues
2022/08/26(金) 13:26:19.15ID:b66GPlrN0
内部で文字列から配列に変換してからフォーマットする
型がない言語(型推論)だから戻り値を使うまでは配列
2022/08/26(金) 14:10:02.84ID:a/x93rb70
>>931
その日本語、英語版( ttps://www.php.net/manual/en/function.vsprintf.php )原文の
> Return array values as a formatted string according to format.
から「values」に相当する部分が抜けてるような気が。抜けてなくてもなんかよく分からん表現だが

まぁ気になるんなら、戻り値が「フォーマット済みの日付文字列」「formatted date string」と明示されてる
DateTime::createFromFormat('Y/m/d', '2022/2/3')->format('Y-m-d')
を使ってみるとか
934デフォルトの名無しさん (ワッチョイ 7fda-oOo3)
垢版 |
2022/08/26(金) 16:07:35.09ID:4wt+rugM0
Return array values as a formatted string according to format.
DeepLで翻訳したら

配列の値をformatにしたがって整形した文字列として返す。

となりました。多分これが正解だと思います。

英語版のマニュアルの見出しにも
vsprintf
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
vsprintf — Return a formatted string

とあるのでやはり戻り値はフォーマットされた文字列でおkですよね?
2022/08/26(金) 17:35:03.11ID:a/x93rb70
「ですよね」と言われても、マニュアルに書いてある以上の情報なんて持ってないしな
てか、なんで試さないの? var_dump()してstringが返ってくるかどうか、30秒で確認できるっしょ
936デフォルトの名無しさん (ワッチョイ 7f1f-oOo3)
垢版 |
2022/08/26(金) 17:52:53.92ID:8DGxFkjA0
>>935
そんなのとっくにやってますよ。
マニュアルがおかしいんじゃないかっていう意味で聞いたんですけどね。
ソースに当たってみました。
やはり返り値は文字列ですね。
https://github.com/php/php-src/blob/23e6856e41cb7e8e29c3824ad53b26c0a57f4da0/ext/standard/formatted_print.c
2022/08/26(金) 18:34:59.55ID:AOSBa6FO0
なんでそんな誤訳(?)したんだろうね
確認お疲れさまでした

マニュアルはGitHub管理のはずなのでPR出しておくと修正されるよ
2022/08/26(金) 19:00:30.76ID:aLr+AxJ9M
このスレ、>>934から「文字列で返ることは確認済み、問題にしてるのはマニュア
ルの記述だ」と読み取らないと質問者様のお怒りを招くのか。レベル高いな
2022/08/26(金) 19:15:45.56ID:S8Vleaqc0
我らは試されているのだ
2022/08/26(金) 20:02:27.99ID:8ESD7+yH0
>>932なんて完全なアホだし
>>933もよく分かってないだろう
知ったかぶりして回答しないことだなw
2022/08/26(金) 20:09:08.43ID:27BJw2950
PHPのドキュメントは翻訳だから間違いがあるのはしょうがない。
その点Rubyは開発者が日本人だから日本語ドキュメントも完璧。

初心者がドキュメントの正誤判断することは不可能
初心者はRubyから学習を始めるべき。
そしてRubi on Railsを習得すればPHPは不要

こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。
 ↓
Ruby 初心者スレッド Part 67
https://mevius.5ch.net/test/read.cgi/tech/1608837867/
2022/08/26(金) 20:25:26.88ID:b66GPlrN0
>>940
私はphp言語の開発者です
お前はphpの使用禁止
2022/08/27(土) 05:59:08.06ID:fRqWQAA00
>>942
日本語お上手ですね
どなたですか?
https://thephp.foundation/blog/2022/03/31/the-php-foundation-update-march-2022/
2022/08/27(土) 07:25:49.03ID:jzDPthdr0
ドット演算子、アロー演算子を作った人なので
今はコア開発者ではありませんよ
2022/08/27(土) 07:51:30.13ID:fRqWQAA00
てことはレジェンドじゃないですか!
Andi さん?Zeev さん?
まさかの Rasmus さん?
2022/08/27(土) 10:53:28.68ID:jzDPthdr0
誰を名乗っても問題ありませんので誰でも良いですが
まあ、完全なアホというのは良くないですよ
というか、アホは完全でないからアホですよね
つまり私はある種完全性を肯定されました
ありがとうございます
2022/08/27(土) 16:24:36.45ID:4Qb5g2XJ0
夏休みだなあ
2022/08/31(水) 02:14:29.44ID:NHfTTCA80
知らんうちにPOSIX系関数の返り値が多次元化されてたのね。preg_matchとか。
2022/08/31(水) 13:21:22.49ID:RpICLcti0
WordPressの管理画面にログインもしていないのに
サイト更新が完了しましたメールが届きます。

これってどういう仕組みで実現してるんですか?
Cronで実行用のファイルを動作させないと無理ですよね?
2022/08/31(水) 13:26:41.54ID:0bu00RjS0
別にcronじゃなくてもいい
誰かがサイトにアクセスしたらサイト更新チェックのトリガーが発動とかでもできる
2022/08/31(水) 14:56:28.92ID:2/ZssPvh0
Cronで、何が変更されたか全体を調べて通知するよりも
変更をトリガーにして通知を送らせる方が、多分軽い
2022/08/31(水) 21:04:09.52ID:RpICLcti0
>>950
PHPって同期通信だから、誰かのアクセスが遅延したりするんですか?

>>951
全体を調べなくても、バージョン情報だけ調べれば良いのでは
2022/08/31(水) 22:37:17.82ID:0bu00RjS0
>>952
PHPでも非同期処理できるし、遅延はほとんどなしにできるでしょ
2022/08/31(水) 23:07:38.07ID:frCvHqxU0
スレ違いのクソレスしか能がない御方には難しすぎるな…
2022/08/31(水) 23:14:07.18ID:2/ZssPvh0
悪意のあるひっかけだったんだ
2022/09/01(木) 08:27:02.20ID:5Hoki9RX0
>>953
つまり、考え方としては
1)WordPressの公開画面に誰かがアクセスする
2)Ajaxなどで非同期処理して更新チェック
3)更新する必要がある場合は、自動更新

って仕様なんですかね?
であるならば、WordPress以外のPHPアプリでもできそうですね
2022/09/01(木) 10:56:30.21ID:z98R98W20
>>956
Ajaxなんか使わなくてもPHPのexec()だけで非同期処理できる
あとはそんな感じ
もちろん実装の一例で、それ以外の方法もあるだろう
2022/09/01(木) 22:43:07.28ID:5Hoki9RX0
>>957
わかりました。調べてみます。ありがとうございました。
2022/09/02(金) 00:01:20.44ID:tq/iSZ/+0
いえいえ
2022/09/10(土) 15:24:58.45ID:3OR0LZqv0
pdoとプリアドステートメントというのをやってみたのですが

$stmt = $pdo->prepare("クエリ文");
$stmt->bindValue(・・・)
$stmt->execute();
ここでDBにアクセスしていると思いますが、

行数を数える $stmt->fetchColumn()

foreach ($stmt->fetchAll() as $row) {
を使う時はDBにアクセスしているのでしょうか?

一旦 $result = $stmt->execute();
みたいに結果を変数に入れてから
$result->fetchColumn()
$result->fetchAll()
のような使い方をすればいいのでしょうか?
2022/09/10(土) 20:11:18.23ID:MysCJx+R0
PDOStatement::execute() の戻り値は成否を表すboolなので
$result = $stmt->execute();
は結果セットの取り出しとは無関係です

:execute()されるとPDOStatement:に結果セットがセットされます
fetch~は結果セットから取り出すメソッドなのでDBアクセスは伴いません

マニュアルを読んで実験してみるよ良いですよ
962デフォルトの名無しさん (ワッチョイ ea51-AnFa)
垢版 |
2022/09/12(月) 12:44:00.88ID:PWuvGxZT0
Symfonyってもう最近使われないですか?
10年前にSymfonyで作られたWebアプリの保守の案件があるのですが
2022/09/12(月) 12:51:41.95ID:S31S8+BV0
少しは調べろ
964デフォルトの名無しさん (ワッチョイ ea51-AnFa)
垢版 |
2022/09/12(月) 13:07:20.58ID:PWuvGxZT0
>>963
ぐぐっても2006年の資料とか・・・

2019年に最新版は出ているみたいですが、新しい資料じたいがあまり無いゆえ。
2022/09/12(月) 13:17:36.74ID:S31S8+BV0
wikipedia やそこから辿れる公式すら見てねぇじゃねぇか
エンジニアになりたかったらまずは公式読めるようになれ
2022/09/12(月) 14:21:38.34ID:Ynnd8wx/0
>>961
アロー演算子というのに全く慣れていなくて
$stmt->bindValue(・・・)
$stmt->execute();
->を使うと$stmtというのが上書きされていく感じでしょうか?

昔は手続き型を使っていたので
$resultに結果を入れて、あれこれやっていましたが
この -> が変数に代入することなく使えるのが不思議な感じです

もう少しマニュアル読んでみます
https://www.php.net/manual/ja/pdo.prepared-statements.php
2022/09/12(月) 23:14:41.96ID:H6EQTEjA0
なんで.じゃダメだったのかなぁ…
中途半端にPerl構文引き継いだせいで面倒なことに…
2022/09/13(火) 01:04:23.23ID:k/lRopxK0
文字列の連結に使ってるからでしょ。
文字変数と、文字列を返す関数、この2つの項の文字列としての連結と区分けが付かなくなるじゃん。

インスタンス自体も文字列評価可能なんだし。
2022/09/13(火) 01:45:06.58ID:d4v/1ArY0
>>967
-> はC由来で . はPerl由来か?
プログラミング言語とスクリプト言語を中途半端に交ぜたからだね
文字列連結も + のほうが分かりやすいしそうするべきだったかと
2022/09/13(火) 03:02:48.59ID:k/lRopxK0
アローもドットも:: も全部C++由来では。
C++自体別から引用してるだろけど、
3つか揃い踏みしたトップランクな有名言語はC++だろう。

ポインタ経由、実態経由、クラス経由で記述を分けた。

結局分けないPythonやC#みたいな言語の方が書きやすいという...
2022/09/13(火) 08:20:07.32ID:d4v/1ArY0
>>970
お前がまるで分かってない事だけは分かった
2022/09/13(火) 11:25:42.23ID:k/lRopxK0
どっか間違ってるの?
2022/09/13(火) 11:44:23.05ID:1xD6R/mV0
ドット演算子はCobolの頃からある
2022/09/13(火) 11:46:51.82ID:Gwjyu6tY0
変数型宣言がない言語で+で文字連結できちゃうとバグの温床になる
2022/09/13(火) 11:48:10.80ID:k/lRopxK0
だから、個々は別から引用したかもしれんが、
3つ揃い踏みしたトップランクメジャー言語はと書いてるじゃないか。
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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