$foo[baa] を $foo['baa'] にしていく作業。。。。
Conversation
Notices
-
weepjp (weepjp@at.weep.jp)'s status on Friday, 12-Jul-2019 17:26:20 JST weepjp - せのお (妹尾 賢) likes this.
-
ぽぷんじゃ? (popnja@popon.pptdn.jp)'s status on Friday, 12-Jul-2019 17:27:22 JST ぽぷんじゃ? @weepjp PHPのバージョン違い問題か何か?
weepjp repeated this. -
weepjp (weepjp@at.weep.jp)'s status on Friday, 12-Jul-2019 17:28:46 JST weepjp バージョン問題もあるし、php.ini の設定の問題もあるかも知れない。
おいらのどんくさいPHPの書き方するから。。。。
-
まめも (mamemomonga@raspidon.mamemo.online@raspidon.mamemo.online)'s status on Friday, 12-Jul-2019 17:34:56 JST まめも weepjp repeated this. -
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Saturday, 13-Jul-2019 01:37:32 JST せのお (妹尾 賢) バージョンが変わってエラーになった原因がわかりました。
PHP 7.2.0からそれまでE_NOTICE扱い (PHP標準では無視のレベル) だったのが,E_WARNINGにエラーレベルが格上げされたのが原因です。
https://www.php.net/manual/en/language.types.array.php#language.types.array.foo-bar
手っ取り早く,エラーを回避したいならば,以下のコードのように,error_reportingを修正してエラーレベルからE_WARNINGを除外すればOKです。ただし,E_WARNINGは警告なので,この対処方法はオススメしません。
<?php
error_reporting(E_ALL & ~E_NOTIVE & ~E_STRICT & ~E_DEPRECATED & ~E_WARNING);
$arr = array("fruit" => "apple");
echo $arr[fruit] . "\n";
$foo[baa]がだめな理由は以下に詳しく書いてあります。
PHPでは,変数は$の前置が必須であり,それ以外は関数か定数のどちらかとみなされます。そのため,$foo[bar]は定数未定義のため,エラーとなるはずでした。しかし,配列のキーの場合,未定義定数の場合,昔のPHPは他にありえないので文字列だと解釈してくれていたようです。
https://www.php.net/manual/ja/language.types.array.php#language.types.array.foo-bar
どちらにしても,PHPの構文上,この記法はまずいので,リテラルの文字 (コード上に直接記す文字) は一重引用符 (') か二重引用符 (") で囲むことが必須です。
一括置換で直すのが後のためだと思います。
なお,PHPは今でも現代的なGoやRuby,node.jsと戦って勝負できるレベルの言語なので,PHPが古いなどの批判はあまり気にしなくてもいいと思いますよ。
参考: http://isucon.net/archives/52502356.html
PHPの新しい機能を使いこなして,古くて悪くなってしまったやりかたを変えればいいだけだと思います。
どうしても気になるならば,乗り換えればいいとは思いますが…。せのお (妹尾 賢) and weepjp like this.weepjp repeated this. -
weepjp (weepjp@at.weep.jp)'s status on Saturday, 13-Jul-2019 01:49:22 JST weepjp 最近は、XAMPP を使ったテストで、この手のエラーに懲りて、 $foo['baa'] を心がけるようになったんですが、 #InstanceTicker は心がける前にやっつけで書いたものなので、こうなったわけです。
調べて下さってありがとうございます。
いやぁ、ここまで長文のリプライが送られてくると、Mastodon のトゥート欄が狭くなったり、漢字変換中スクロールが狂ったりすることを知る。。。
メモ帳起動して書いてコピーして貼り付けたっていう。。。In conversation permalink -
せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Saturday, 13-Jul-2019 01:59:50 JST せのお (妹尾 賢) 1個1個公式文書を当たって確認するのが結局のところ近道です。
Mastodonを自分でインストールしたことはないのですが,表示が崩れるのですか?こちらのGNU socialは文字数制限は自分で決められ,文字数カウントを使いたいので,今は投稿上限10万文字にしています。長文が来ても,こんな感じでスクロールできるので特に問題ありませんが,Mastodonはそうではないのですか?
https://social.senooken.jp/notice/2412809
それは基本機能に問題あるように思いますけどね…
そもそも文字数制限はくだらない機能だと思っています。こんなくだらない制限のために,重要なことが伝えられないなんてあほらしいです。仮に,こちらも文字数制限が500文字だったら,一度の投稿でのサンプルコードや根拠の掲載も難しく,何度も連投必要になり,お互い不便なだけです。
まあ,ここでこんなこと書いてもあまり意味ないのですけどIn conversation permalink Attachments
weepjp likes this.weepjp repeated this.