Newsgroups: php.internals
Path: news.php.net
Xref: news.php.net php.internals:119828
Return-Path: <vorismi3@fjfi.cvut.cz>
Delivered-To: mailing list internals@lists.php.net
Received: (qmail 45817 invoked from network); 6 Apr 2023 20:52:06 -0000
Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5)
  by pb1.pair.com with SMTP; 6 Apr 2023 20:52:06 -0000
Received: from php-smtp4.php.net (localhost [127.0.0.1])
	by php-smtp4.php.net (Postfix) with ESMTP id 2CDF8180503
	for <internals@lists.php.net>; Thu,  6 Apr 2023 13:52:05 -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=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID,DKIM_VALID_AU,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,
	RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE
	autolearn=no autolearn_force=no version=3.4.2
X-Spam-ASN: AS8075 40.104.0.0/14
X-Spam-Virus: No
X-Envelope-From: <vorismi3@fjfi.cvut.cz>
Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2136.outbound.protection.outlook.com [40.107.22.136])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by php-smtp4.php.net (Postfix) with ESMTPS
	for <internals@lists.php.net>; Thu,  6 Apr 2023 13:52:04 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=hrwtmgHJ/HY9zUQy5qlkoZ8grizzIzPtBZ8hCNBBQLiA+XVUuRpn6AcA/7yCcamvCWTZ+h1DbriNUBb5GYjZFF25CbcN7sO6NJtvnojHdSwl1fRe10aByEaEdECtOeyLPFrmR59TS7lANpXiPwAKP3b41zXw0PfAoIJkSDF6tDJR4Ynt0x/MGi+aNoLl1Vigoq7P/nO//IE8RHuLPLtvSPwMWkBdPEwPDk9hzXfiTAonOJPNupGWCiiKNjWBuQ1y1YjQOTR7MqeSjXnuLtp70pKG6M5elMK37b5h6Srx2jKGI3Cdvn0N5eq4mgDAB7ucKBrzMZ5jIch7gdo35rVPuA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=D1SY6uandpxKJ9FXWkQLKD2qciRzWR1WI3+/k0IN2do=;
 b=UaxGqSPU6KEWkkVAKfbxq+k8FnneEzkoEuNDH3A8LHIahFexSP2cvGpB7o6/hO3GFhDM3urezEOg+bOg5F/H+g34Xuk+0bkaJVs7ctqRrxmriQTug/TWiIM4AXmBq4j0wg0VItG38sbLl7JXcVRS9mj8dp1/A1YbfPXyFVQDKg8MYtyKfcs6fLyXJr0SIuoqvx4U91sAvu66t90YQiAFEgimQqSKXshvPjHrjGwXPH7jsi7h/En7kuJ1iHx/e3QQVQPfn/ByMTlCmiK2jKRe27I6EWZvzRid3EXmSLx5NwYvqZfddeWkubHgmupEvcvwxbuiit7SRGMPsTwK1Y7D4w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=fjfi.cvut.cz; dmarc=pass action=none header.from=fjfi.cvut.cz;
 dkim=pass header.d=fjfi.cvut.cz; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fjfi.cvut.cz;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=D1SY6uandpxKJ9FXWkQLKD2qciRzWR1WI3+/k0IN2do=;
 b=XHnV4QVkDUOsy2qOE+Nw6kh0DrOkqsDpArEkfbCEsk1l0NlUL/Jz2duvchTOWe/KyzSiIEDQkuhDaHiVCp/jmAhcG6KBv79tHoyDHIBg3vOMfngTbOF1eXrESamxL9lglXGU/c06zEv1AkLDS0jqxL4UcTK5kzB02Wyd0qYVU2w=
Received: from GVXPR06MB8972.eurprd06.prod.outlook.com (2603:10a6:150:123::11)
 by AM0PR06MB5969.eurprd06.prod.outlook.com (2603:10a6:208:10f::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6277.31; Thu, 6 Apr
 2023 20:51:56 +0000
Received: from GVXPR06MB8972.eurprd06.prod.outlook.com
 ([fe80::e4dc:2186:cd7d:c00a]) by GVXPR06MB8972.eurprd06.prod.outlook.com
 ([fe80::e4dc:2186:cd7d:c00a%4]) with mapi id 15.20.6277.030; Thu, 6 Apr 2023
 20:51:56 +0000
To: PHP internals <internals@lists.php.net>
Thread-Topic: [PHP-DEV] Array spread append
Thread-Index: AQHZaArhDQbwWEJJB0G6JU0PYZSu868eEkYAgAAUpzWAADpaAIAAVZaS
Date: Thu, 6 Apr 2023 20:51:55 +0000
Message-ID:
 <GVXPR06MB897288CBFAC593381988D107B2919@GVXPR06MB8972.eurprd06.prod.outlook.com>
References:
 <GVXPR06MB8972D3FEA5647B021C5775E3B2909@GVXPR06MB8972.eurprd06.prod.outlook.com>
 <CAPyj-LA4p7_tR8xjj4DFKtXtYQsZm34Q_Uq73KGnWr+zeamAEA@mail.gmail.com>
 <GVXPR06MB8972950BC5031756A8F39D5DB2919@GVXPR06MB8972.eurprd06.prod.outlook.com>
 <CABdc3Wrp9k1HWspkv=43RnNJXn5s1AKtm94N8tfXowYjBFwDDQ@mail.gmail.com>
In-Reply-To:
 <CABdc3Wrp9k1HWspkv=43RnNJXn5s1AKtm94N8tfXowYjBFwDDQ@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=fjfi.cvut.cz;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GVXPR06MB8972:EE_|AM0PR06MB5969:EE_
x-ms-office365-filtering-correlation-id: 4f03c3c5-9ea4-44a2-2ee9-08db36e0c1cd
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 95QLCBYXzhTdXRHzbqAciQt8vjuFMddGtDcXiLItnvbhmg3P1+9qSAWJ1ArKA78Qx/c1ZeNCVeSdVSa94X3pw3AbJfr0Jj0v1KlsIXZruSIxynsLNDyZeKrFtbbXQJpS/f2KnpWxFtpZM6/x2UBjY2MuV3nt7exCOPdJHs+z6u8DyplXleUwKhkaI+FhDWENeUwAPvDNNilWzCT/b2A0lbhCjZytCUZk7dt1R87jPxCc/sWNmSV554XsH8zyCj8l0GM/uPRx3i0J+u6Wd7zHfRCVIA6lvkEejxHkId2uYkcMP8WvTzs84UPUv/i+nGMSaCmonEWe+5PAES7Sluym0byWdssXFPUwUJjRMOtdoDcPld+MzSc99nD76gPVZdCwo17E3P2mHl4uJkKIBb0vgu6X3QlDT3ocrMn88s22DeDZzQBYNOBsGm7891ZPEUm/Den76BvO2+aL3mhUOPL4DQyKS0lgLPKBnZmuULB/NSuP5SltH+/Dd697uQK3L61L2tcdtUSZArxQ8khxWZc3L9R/240iQbmPidA8MrHvj9s/xI1CbL8AQGKUN7gkExw5itrN0Ro+FecupJZiOAPlk6Wr5wJZbs+kDGGJ5DswZMo=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GVXPR06MB8972.eurprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(396003)(136003)(366004)(346002)(39860400002)(451199021)(2906002)(41300700001)(52536014)(8936002)(91956017)(6916009)(8676002)(64756008)(66446008)(76116006)(66556008)(66476007)(66946007)(19627405001)(5660300002)(83380400001)(478600001)(786003)(316002)(71200400001)(966005)(7696005)(6506007)(9686003)(186003)(53546011)(55016003)(33656002)(166002)(122000001)(38100700002)(41320700001)(38070700005)(86362001);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-2?Q?vvmcv24eoBnrxBWgIAD3ZHs48QbF61+YkQzlqXQfNoWlGb7UK+4z45byd6?=
 =?iso-8859-2?Q?+Brm8unByB28so9cf9UUMKN00RuJGv34jQhCwfA2d6kjBs3vfyAGMX6idm?=
 =?iso-8859-2?Q?WNdf/13ELFvSI9F7PlDLrnre5paaWUmAMNi4vJTEbQEZ7eFtirfVnhheaR?=
 =?iso-8859-2?Q?Bvb0QDhlx/VahAXF+BxWoN/ZOCrPnQbxODct33PKP7jxLlh7GU6ckCz4Yy?=
 =?iso-8859-2?Q?TMB7t7yefPsjRQLLwYEInuhQUm+/Rv+OJW/Y9QdGwKJnlXedhVWFEfDEZa?=
 =?iso-8859-2?Q?J7dvq8my7MZ9UKs+2BWBVT6Kvhx5PCmLECgi0Q8uYlOi0IEedg/WgumYXL?=
 =?iso-8859-2?Q?jCBRnnHe2TvvBkfeWQtieri5A5n8/fUPCkGcWnAd1/Gc9ZHdmKhe+It8qN?=
 =?iso-8859-2?Q?k+/yL5v6zwjNHu5JpFQNuzp5u8hmKYxIHPw5wtkWiqeYWu3IJ0ZMVHhZKO?=
 =?iso-8859-2?Q?HKEx2zEuJaIv71lrZN2zQlgcYNaJfuBC9ewLXYtm+KV6CA/CCOpRm4O6A1?=
 =?iso-8859-2?Q?np9r2db+rn8c3g9c6/ku9mlxNp7nzrpiVbpI6SSmbxehwnaPGk3YOZ3zg7?=
 =?iso-8859-2?Q?EJgohpyKayzFfG4bNjUVJiAwBCBjEM+TBAtVZOWyM5AzumoOLNcjaBFCh5?=
 =?iso-8859-2?Q?gecYRsBCsLB2wCU9NTZsGy4wxM09iHglDHHv4HL9ZW4uZsLI2/O2fee74o?=
 =?iso-8859-2?Q?+0jRAGGh8GeeCQFkTYHslIlIfKRGoyNZIDEqfsvYiD0yOcxzHIl5fKEqFM?=
 =?iso-8859-2?Q?urGzBF2fk56DqvgX/LQbeutalKoPM/3vzZhbmqzlK+01ynOHxpPuEhVTbt?=
 =?iso-8859-2?Q?Wxo4m2rbNBcnPiFCE3PYA8jYYkUYVG1LcwUyzbExF9jtPGjTaThI/IT87u?=
 =?iso-8859-2?Q?XyFWIg2bBhxEhRW0XSZ6ktZ8sTpFAw7d+1GcKMrboqdlOIQ7+qwLEKqHw8?=
 =?iso-8859-2?Q?BHYaKrPsBqxRzsOP0OU5EkgCw9zsVWAR8YSANmTh2RQgZQiv8cjsgUkGqt?=
 =?iso-8859-2?Q?lkqPzCx1ykM9n80YZWE2YWZiTLX2w6YjJqjuMUYuuthC2WdCp9vPP3+A5g?=
 =?iso-8859-2?Q?m5OT5JHtjsw2ABBjVimNU7vI7eF+uR8Sm746Vxfy+w59NKCXLIx62be8uC?=
 =?iso-8859-2?Q?CQilkvQMPmfClH5a/+ykK6F9Idbb0fZxjKPy/24o1K/fa4dAbo36PyS0YE?=
 =?iso-8859-2?Q?0M4PVaF9f0lBzOWzlb7GQFMwe0lqrh3BJVtKt6uAALnVnQcCnmPyomQ4ZA?=
 =?iso-8859-2?Q?Pdn6MOA0uDL4JXvbIh23E20yObjBKawDIP6cSgBkZkBnqrqw8yLcA7zfMd?=
 =?iso-8859-2?Q?6mdVPj4oM/fbRS8CCTUwavHMDaJDnVP0f5AdYnZLT1L54W9TLYtieBRo73?=
 =?iso-8859-2?Q?jHcw6TYaQsXSDtqiCp1/xrFxoEFXRExAm4h8XpBkYyAiuFk0lH2JCPviRI?=
 =?iso-8859-2?Q?jaXzQfGY97kZ3U08s5RyvB538QgoN51XT9VvTFd5JIVaMEBYqKCw8ChWDM?=
 =?iso-8859-2?Q?n+oDzjBE2IbGjyoNwL9fvAga+CTTrh9Oy0kwY9JudiMXY3kVbSV3wK4qXa?=
 =?iso-8859-2?Q?Wu6A528tZ15MZ994Boh3dtQxVvvTrw8xM/gzqx/hjan9zWLu/1NJOauTkN?=
 =?iso-8859-2?Q?68+Qdp53w0jcK54Hh8AHYXOIxmGPWtUQ9E?=
Content-Type: multipart/alternative;
	boundary="_000_GVXPR06MB897288CBFAC593381988D107B2919GVXPR06MB8972eurp_"
MIME-Version: 1.0
X-OriginatorOrg: fjfi.cvut.cz
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: GVXPR06MB8972.eurprd06.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4f03c3c5-9ea4-44a2-2ee9-08db36e0c1cd
X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2023 20:51:55.5036
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: f345c406-5268-43b0-b19f-5862fa6833f8
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: QmPSom8T7XRQTWnT7y1vfvbUjcsjHY8X6Y9CryiN7RadArK+bur40Ym1vx9h3kFJQlaaJiQkHLMr2BKwdcz+3Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR06MB5969
Subject: Re: [PHP-DEV] Array spread append
From: vorismi3@fjfi.cvut.cz ("Vorisek, Michael")

--_000_GVXPR06MB897288CBFAC593381988D107B2919GVXPR06MB8972eurp_
Content-Type: text/plain; charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable

The goal is fast multi-item array append, which is currently not possible, =
as `+=3D` and `array_push` operators does something else and `array_merge` =
is very slow as the whole array is copied.

Currently the fastest approach is to use the foreach equivalent, which requ=
ires much more code and two intermediate variables for k/v.

For better understanding, I have updated the example codes in https://githu=
b.com/php/php-src/issues/10791 but sadly all short codes are slow as array =
is copied.

Michael
________________________________
From: Micha=B3 Marcin Brzuchalski <michal.brzuchalski@gmail.com>
Sent: Thursday, April 6, 2023 5:01 PM
To: Vorisek, Michael <vorismi3@fjfi.cvut.cz>
Cc: PHP internals <internals@lists.php.net>
Subject: Re: [PHP-DEV] Array spread append



czw., 6 kwi 2023, 13:53 u=BFytkownik Vorisek, Michael <vorismi3@fjfi.cvut.c=
z<mailto:vorismi3@fjfi.cvut.cz>> napisa=B3:
Hi Ilija,

* Are integer keys preserved? I'm assuming no, as otherwise it would
be the same as `$a + $b`.

$arr[...] =3D $arr;
should be the same as
foreach ($arr as $v) { $arr[] =3D $v; }

I'd argue with that because I think the spread operator should be consisten=
t with preserve keys strategy used in other places.

Cheers,
Micha=B3 Marcin Brzuchalski

--_000_GVXPR06MB897288CBFAC593381988D107B2919GVXPR06MB8972eurp_--