Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:117456 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 58570 invoked from network); 30 Mar 2022 12:42:39 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 30 Mar 2022 12:42:39 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 419601804FF for ; Wed, 30 Mar 2022 07:11:06 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS15169 209.85.128.0/17 X-Spam-Virus: No X-Envelope-From: Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Wed, 30 Mar 2022 07:11:05 -0700 (PDT) Received: by mail-ej1-f43.google.com with SMTP id bi12so41867088ejb.3 for ; Wed, 30 Mar 2022 07:11:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=/+ZhiJslGy8g98yUWu3liEuwE9+xwqpnR6J5WkEyBDw=; b=UzWAj2XavuAkdculDPgfs45HKVv7/sK4BSgHnXFAZBV/BH1Odjmb9wyWbLhHFbYD6x 5YEuCHZnYxydq6EbYt7i8qpBwtx5MkbtSL8tCG6t2XfoyOsmyJf+D6kt1WU2U6a4OZCn t2nGc9TRW8hn54mzaT+lAEQMddG+ghzojfFmnc+4LCQAeLoKb2BvvR9dRuKl1Fs5Q7ii cAe3EQgljplb3Yk5moC6OwnYxiYsSKADzblGAwe8Qo74O0ieKF/K8jH3SEFlydR7hA8u m9r4Tjg+ss/zBwtCE+Q7z/ETMDWdtFdh1lSy9QYeKzNxfprv6+j+tjA9cQAfTzAJmtAL d1wA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=/+ZhiJslGy8g98yUWu3liEuwE9+xwqpnR6J5WkEyBDw=; b=TBkHlwOZQZBrqRdYnBRy7XRVZYG6DaLNLIAka/RN80sZIsFDIgYWb4gB5hzrVZNcnY MpCJTEVCdXAZaIg8iQ7Pu+fsWJKBeiqU5dsPZo+qNoS5yscurDGjQSSJOF+viwfIMn5c tiNKcAr+jTJq+1iDKdRONFQyIY8zoMB2GL48dhYC+fl8hSta+FrDCmbInBTWyIIRxYTw f+GckVw2ElUKo98I4RoLA6FBE5Mr87A1R0RcNtnkGZMB9Y3AYUZ+lduMB+o6UXDqTgMJ 24lIPPfGH+aLpupS74VAugzzHPLI6qKbBr+Rf/YpV/OEzm07WWj2GDgZ4yopN3H66PjQ E07w== X-Gm-Message-State: AOAM533ahNNRmSyF317v7dPXQBvz/DIjFCy/Pr/t1sv56A/uGXxttPRi OWKLmXz+NKZETxruqd+fXaE= X-Google-Smtp-Source: ABdhPJw6ssnJSgOvQ9fwx/prh2osviPZg1O+lSlM4dXO8vmd/HxsuaDuJbzP1ZgPnfaS99byIKMUYQ== X-Received: by 2002:a17:907:7892:b0:6df:f38f:bc65 with SMTP id ku18-20020a170907789200b006dff38fbc65mr39642901ejc.101.1648649464426; Wed, 30 Mar 2022 07:11:04 -0700 (PDT) Received: from smtpclient.apple ([89.249.45.14]) by smtp.gmail.com with ESMTPSA id p6-20020a170906614600b006e133d37f8bsm2052003ejl.138.2022.03.30.07.11.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 30 Mar 2022 07:11:04 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.80.82.1.1\)) In-Reply-To: <9ecce8c9-c8bc-93e3-25f0-386c2c41ca1a@gmail.com> Date: Wed, 30 Mar 2022 16:11:03 +0200 Cc: PHP Internals Content-Transfer-Encoding: quoted-printable Message-ID: <14179C1D-F64A-4B01-9A1F-274730748095@gmail.com> References: <9ecce8c9-c8bc-93e3-25f0-386c2c41ca1a@gmail.com> To: Rowan Tommins X-Mailer: Apple Mail (2.3696.80.82.1.1) Subject: Re: [PHP-DEV] Undefined variables and the array append operator From: claude.pache@gmail.com (Claude Pache) > Le 29 mars 2022 =C3=A0 21:44, Rowan Tommins = a =C3=A9crit : >=20 > Hi all, >=20 > If $foo is not defined, statements such as $foo +=3D 1 and $foo .=3D = 'blah' raise "undefined variable" Warnings in PHP 8, and will throw = Errors in PHP 9. However, the very similar looking $foo[] =3D 1 succeeds = silently. >=20 > This seems odd to me, as "append to string" and "append to array" seem = like very similar operations, with most of the same use cases and = possible bugs. >=20 >=20 Hi, There are various subcases to consider: (1) $x[] =3D 42; and $x['y'] =3D 42; where $x is undefined (2) $x[] =3D 42; and $x['y'] =3D 42; where $x is null (3) $x['y'][] =3D 42; and $x['y']['w'] =3D 42; where $x is an array, = and $x['y'] is undefined. Of course, I agree that (1) should be an error. The case (3) is similar to (1), but I think it is more controversial to = change. I bet that they are various places in my code that take = advantage of that feature, although personally I don=E2=80=99t mind to = write $x['y'] ??=3D [ ]; when needed. =E2=80=94Claude