Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:111769 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 66380 invoked from network); 2 Sep 2020 00:31:03 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 2 Sep 2020 00:31:03 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 9ACC41804D8 for ; Tue, 1 Sep 2020 16:35:48 -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=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS, SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-Virus: No X-Envelope-From: Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12olkn2010.outbound.protection.outlook.com [40.92.21.10]) (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 ; Tue, 1 Sep 2020 16:35:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QVTLqnCGuZQ8AfJAj1pNHN4TKBfiWZ0euHB1dqTZlbdeicSxHh6tBrXtKYPtCEw9wCal0bDnP+rfL4HxINrPj/u6ZdBoLQL9ojvoSEYPnXmtXarOdisH18qiB9pRm+Vt3qYbBnNYElguBtyNIyLYQWpR0AxObgfYXb6jrAXOADGxF/PUG6DHTUvjy+n9lBY2iCCGCQmhcyOMZY/kfE/X3A7jmEthnu66R+cm3W2QuaZzOHm6DGNsL32ohpEEklD59+6uwADkt7B9NJNNtsUG11Y9/IbcB7FL1z991IYgHf++h4aFeeMUPaAhok6+rd5v0XzPQwn6sEDOcBPyGXK36w== 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-SenderADCheck; bh=5yOtifiRuzYLlYJADpGaBu6nIZ3NGTW+1GdRy9zEoMA=; b=LEjSZIKLFyBDuts+tax541sD99zFMgkzMOFZrVoCUho/xdm5EsQHTuXZiijJBMbvCl0VNVQaXZljT90OzP06jxNnB5wu8I4L/O/e1rOj5Fe751d958MmxnEdiJtWLzNd3ukqe9bZbjjrbfbQXg5JljmdVMOIde3C8w9Tr9eAOt+PPpBXaJZQvHI3ScSmqqRvu5zuaT6DQQ+jMygEUsZHy1h5/8y5o+pp5veMK/4eqQgCGZZNmXXR7q6HIQyKKq7KaWjItNXXQl4X/rG857E28e1/YuRP55Ya8uW1J+jdPIvZlE0KffZY9PVUztYaOWop7FaU4Riw9IAgYPicSMkEYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5yOtifiRuzYLlYJADpGaBu6nIZ3NGTW+1GdRy9zEoMA=; b=EvA7fX2SOVD035DLo7PIzkRfF6PMHXWb4tb/SlSf6QVRPtOzQb5PvIoJrbdHqx5V2tWenTJyy287o0EY8Uan1KjZvsWXEZLwbOpNkNZNLVZ8iVIxRMuqCsDFdEgWtepdmxvZ4odPW0OgGawlzd1eRc7NTVldy0pG0N47OCeaK06f61I3YtUBryQ3rgT0uuC/0RwsEkMmlLh7waUbovzR8+oGPK1+Wn0r/w4JmdQKxQDEt0kXz9HWzFs1vbiQ1ICk0BCpfgci6B8KF+D6GRBZUkr87iV2M6BfVq73Z/fMLONc3W6PWWaQxbGEIbHVuNJATOk2oDT6llrlrK4SMCLtXQ== Received: from BN8NAM12FT011.eop-nam12.prod.protection.outlook.com (2a01:111:e400:fc66::45) by BN8NAM12HT202.eop-nam12.prod.protection.outlook.com (2a01:111:e400:fc66::211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3348.7; Tue, 1 Sep 2020 23:35:46 +0000 Received: from DM6PR07MB6618.namprd07.prod.outlook.com (2a01:111:e400:fc66::53) by BN8NAM12FT011.mail.protection.outlook.com (2a01:111:e400:fc66::402) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3348.7 via Frontend Transport; Tue, 1 Sep 2020 23:35:46 +0000 Received: from DM6PR07MB6618.namprd07.prod.outlook.com ([fe80::f9d1:ed5b:8625:bfb4]) by DM6PR07MB6618.namprd07.prod.outlook.com ([fe80::f9d1:ed5b:8625:bfb4%7]) with mapi id 15.20.3348.015; Tue, 1 Sep 2020 23:35:46 +0000 To: Dik Takken , PHP internals Thread-Topic: [PHP-DEV] [RFC] Global functions any() and all() on iterables Thread-Index: AQHWf/E9QGyttklhzEGaW5Nz9+rdmqlUQ/QAgAArGMs= Date: Tue, 1 Sep 2020 23:35:46 +0000 Message-ID: References: , In-Reply-To: Accept-Language: en-CA, en-US Content-Language: en-CA X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:13E04922E95EEE1E964253E3FC41EAB39A006DC868FECDCE150CF05A1F82BEF4;UpperCasedChecksum:D9BE40FF39E4054963BF19B0B52566CB473733C0279554E7F411C8C94DA45086;SizeAsReceived:7144;Count:44 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [ndgidTl3ceF36wwYi1/ucR4xL8xKj9bbYdefoP6GULIwUmvUIQ+oOCs49w19ABKP] x-ms-publictraffictype: Email x-incomingheadercount: 44 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 3fe22615-490b-49c4-9232-08d84ecfc01c x-ms-traffictypediagnostic: BN8NAM12HT202: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rQw7YQ714A3AP6p1f3DJvTR3oXSyWJdR5bOrScFWr2vkSsfDxvrShYGmjH4TgjtIAnPs9C4qP8u3fAhjPzSAdXFq4cXCKgPPhot1l/H6lLk8OACl2+ICXQVoBSTVQ0ouYPDxT8NtYIiS6qNKvyuOO6trzW7HZfjp+eK/y+hwk0zDV1HBW/v5veGvUT4SBJxzRqvv4wUb8IiLuOAdd63UUg== x-ms-exchange-antispam-messagedata: QoPfjL9oC+54008ilGNMwxlDbsRRkcv+xCZw0mVwitB+0GhZDujLLSyuRU+s/jWhZjOjuCoS6MZdSzNVDcdun3TkObzpWtesvH125muhLnCbj8UupRV2oNSqP1bZWRiTWPmjhwC1KaYyn9Nv7tursqjyQTGn9Pi+G5wMZKxXMA7Jk0xJOjiYcSu9B8eleo7WQqgGyGWBJNn0ivzw5RIcUw== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-AuthSource: BN8NAM12FT011.eop-nam12.prod.protection.outlook.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 3fe22615-490b-49c4-9232-08d84ecfc01c X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Sep 2020 23:35:46.0810 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8NAM12HT202 Subject: Re: [PHP-DEV] [RFC] Global functions any() and all() on iterables From: tysonandre775@hotmail.com (tyson andre) > Perhaps we could do the same thing by introducing an items() function=0A= > that takes an iterable and yields one array for each item in the=0A= > iterable. The arrays contain the key/value pairs. Quoting the example=0A= > Tyson gave:=0A= >=0A= > =A0 any($itemMap, fn($enabled, $itemId) =3D> $enabled &&=0A= > =A0 meetsAdditionalCondition($itemId), ARRAY_FILTER_USE_BOTH)=0A= >=0A= > Using items(), the above can also be written as:=0A= >=0A= > =A0 any(items($itemMap), fn($item) =3D> $item[0] &&=0A= > =A0 meetsAdditionalCondition($item[1]))=0A= =0A= This could be called various things (`items()`, `entries()`, `iterable_item= s(): Traversable`)=0A= and there'd be the question of whether=0A= `array_items(array $entries): array`=0A= should also be added (return a list of key+value entries).=0A= =0A= I'd expect `items(): iterable` to definitely have more performance overhead= than `$flag=3D0`=0A= due to the extra method calls to next() and key() on the result=0A= but potentially be better for readability or working with generators.=0A= =0A= There's many proposed ways to solve that problem=0A= (adding `int $flag=3D0`, `any_item(iterable, callable($value, $key))`, etc.= ),=0A= so I'm leaving it out of the RFC=0A= =0A= Thanks,=0A= - Tyson=