senooken JP Social
  • FAQ
  • Login
senooken JP Socialはsenookenの専用分散SNSです。
  • Public

    • Public
    • Network
    • Groups
    • Popular
    • People

Untitled attachment

Download link

Notices where this attachment appears

  1. せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Saturday, 13-Jul-2019 01:37:32 JST せのお (妹尾 賢) せのお (妹尾 賢)
    in reply to
    バージョンが変わってエラーになった原因がわかりました。

    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の新しい機能を使いこなして,古くて悪くなってしまったやりかたを変えればいいだけだと思います。
    どうしても気になるならば,乗り換えればいいとは思いますが…。
    In conversation Saturday, 13-Jul-2019 01:37:32 JST from web permalink
  2. せのお (妹尾 賢) (senooken@social.senooken.jp)'s status on Saturday, 13-Jul-2019 01:10:03 JST せのお (妹尾 賢) せのお (妹尾 賢)
    このPHPの日本語ページ。更新が追いついていない。日本語訳を書き足したい。アカウントつくるか。
    PHP: 配列 - Manual https://www.php.net/manual/ja/language.types.array.php#language.types.array.foo-bar
    In conversation Saturday, 13-Jul-2019 01:10:03 JST from web permalink
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.