Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:117459 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 64127 invoked from network); 30 Mar 2022 13:04:21 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 30 Mar 2022 13:04:21 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 16F8C180539 for ; Wed, 30 Mar 2022 07:32:51 -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.2 required=5.0 tests=BAYES_20,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE, 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-yb1-f174.google.com (mail-yb1-f174.google.com [209.85.219.174]) (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:32:50 -0700 (PDT) Received: by mail-yb1-f174.google.com with SMTP id g9so34656024ybf.1 for ; Wed, 30 Mar 2022 07:32:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=EC+bLA7LgFGWBK+iWg51o/TX0+XYjZRCmEGG7xklek0=; b=eeU2Dlr8/IL36po6K4UXkhJL6vjKQrcws8LDm8CUgdO49jdFvIlWSBYpxIEMSCUGRQ SAaY8zlaifB4G52N/P62P0ZtVHA31lh3SHjPmKLAYiaGf1r7DK3DRg976/GHSdBkDFDD 8Fjyn1LZEegExGuti0uw3il6FLf+w6PRwTjFp/yE+ZpSw8p4QhEF/Y8gaoq3fm67aj20 gCNe2++nGWaLa6QBMeHicyrGAu2dYPXjmt7INVpxe2DL2rn9B4yK8Inmzwz0DvegIa82 wZNMmyGpOV5PdLI9UecgKDUyIMWb98DlTGQIu/ZsarybU7ZocSmDChIM726Re1IXR9il 3U6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=EC+bLA7LgFGWBK+iWg51o/TX0+XYjZRCmEGG7xklek0=; b=TMdgx/08WZ3M9TCqmkrmJlm4qy9lhVB5C8sFap+7xsTIRq3xtBaoDIZt4o1zqRWDq7 YnMAKP0xq72uvaINkRApou1whLORdrXw4P6EKLc3Op9zq+T2CFlFBCgYWJAQb5i2yE2b +URXA5O5ngVtfVsUiAhrCyQftvfYVPG/hsEtzqLDgqIND07OVyB1w9DRhRoXCXW39i9J 9ummOGzfy0H6JfLh53/MUDHaC4OB3PnPd5YJAlBLhiny+xUXau+bBsDD3n6q6vVQUFxU /Th6nbBJuG3gyHTfZonpWpWVMjritKNLT5YuXRZcH3RZMnc/tpsiuxqZwMgEWRJCQYsM 1NYQ== X-Gm-Message-State: AOAM532QEuvfuEAJyO9wcjZFQO68GU0dwPqDVqckd4/r2p1VHsN91F/G ORPgn6mxwebFqaQ8/4XRcPr6iLzHE8vOz6Y5eA== X-Google-Smtp-Source: ABdhPJyPmAKCHVTkgI+bTqPVJNdv+imSrHzYINptoy7kWo+ezEpTR8O8hyEPdxzqclOTwrpi5MXnaHROb0CMkZ6uOVE= X-Received: by 2002:a25:22d6:0:b0:633:90f5:a3d with SMTP id i205-20020a2522d6000000b0063390f50a3dmr33124433ybi.402.1648650770287; Wed, 30 Mar 2022 07:32:50 -0700 (PDT) MIME-Version: 1.0 References: <9ecce8c9-c8bc-93e3-25f0-386c2c41ca1a@gmail.com> In-Reply-To: <9ecce8c9-c8bc-93e3-25f0-386c2c41ca1a@gmail.com> Date: Wed, 30 Mar 2022 16:32:39 +0200 Message-ID: To: Rowan Tommins Cc: PHP Internals Content-Type: multipart/alternative; boundary="00000000000085901f05db706bfb" Subject: Re: [PHP-DEV] Undefined variables and the array append operator From: guilliam.xavier@gmail.com (Guilliam Xavier) --00000000000085901f05db706bfb Content-Type: text/plain; charset="UTF-8" Hi Rowan, Not really a "compelling reason why we should keep this inconsistency", but I have occasionally relied on array autovivification *for sub-dimensions*, e.g.: ``` function f(iterable $xs) { $map = []; // initialization! foreach ($xs as $x) { // $map[foo($x)] ??= []; not needed $map[foo($x)][] = bar($x); // autovivification } // Then e.g.: foreach ($map as $foo => $bars) { foreach ($bars as $bar) { /* ... */ } } } ``` (adapted from my https://externals.io/message/114595#114611 message in the "Disable autovivification on false" thread). On the other hand, I agree that `$undefined[] = $x` looks like a bug... are both cases the exact same opcode? (if yes, I wouldn't really mind updating my code, especially for consistency with other "append" operators like .= or +=, and that could even be an opportunity to rewrite it in a more "functional" style...) Regards, -- Guilliam Xavier --00000000000085901f05db706bfb--