Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:116019 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 57943 invoked from network); 8 Sep 2021 20:54:03 -0000 Received: from unknown (HELO localhost.localdomain) (76.75.200.58) by pb1.pair.com with SMTP; 8 Sep 2021 20:54:03 -0000 To: internals@lists.php.net References: Autocrypt: addr=ramsey@php.net; keydata= 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 Date: Wed, 8 Sep 2021 16:31:50 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:52.0) Gecko/20100101 PostboxApp/7.0.49 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="Vwctarzdn3DJ9ywsoqWH7nBSRHqxdxxMV" X-Posted-By: 96.61.105.82 Subject: Re: Option for array_column() to preserve keys. From: ramsey@php.net (Ben Ramsey) Message-ID: --Vwctarzdn3DJ9ywsoqWH7nBSRHqxdxxMV Content-Type: multipart/mixed; boundary="cNnbtYxamPBYvFDB02OqeByXi3M8phe4Z" --cNnbtYxamPBYvFDB02OqeByXi3M8phe4Z Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable Andreas Hennings wrote on 9/7/21 19:19: > Hello internals, >=20 > The function array_column() would be much more useful if there was an > option to preserve the original array keys. > I can create an RFC, but I think it is better to first discuss the opti= ons. >=20 > This is requested in different places on the web, e.g. > https://stackoverflow.com/questions/27204590/php-array-column-how-to-ke= ep-the-keys/39298759 >=20 > A workaround is proposed here and elsewhere, using array_keys() and > array_combine() to restore the keys. > However, this workaround not only adds complexity, but it breaks down > if some items don't have the value key. See https://3v4l.org/im2gZ. >=20 > A more robust workaround would be array_map(), but this is more > complex and probably slower than array_column(), for the given > purpose. >=20 > Some links for your convenience: > The function was introduced in this RFC, https://wiki.php.net/rfc/array= _column > It is now documented here, > https://www.php.net/manual/en/function.array-column.php >=20 > Some ideas how this could be fixed: > 1. Allow a magic value (e.g. TRUE) for the $index_key parameter, that > would cause the assoc behavior. To fully avoid BC break, this must be > a value that previously was completely forbidden. The value TRUE is > currently only forbidden with strict_types=3D1. A value of e.g. new > \stdClass is fully forbidden, but would be weird. A constant could be > introduced, but this would not prevent the BC concern. > 2. Make the function preserve keys if $index_key =3D=3D=3D NULL. This w= ould > be a full BC break. > 3. Add an additional parameter with a boolean option or with integer > flags. This would be weird, because it would make the $index_key > parameter useless. > 4. Add a new function. >=20 > Personally I would prefer option 1, with value TRUE (I can't think of > something better). >=20 > If I could change history, I would prefer option 2. The current > behavior could still be achieved with array_values(array_column(..)). >=20 > Regards, > Andreas >=20 We originally had a patch for this while PHP 5.5 was still in beta, but we decided against merging it, and I can't remember why. :-) https://github.com/php/php-src/pull/331 Cheers, Ben --cNnbtYxamPBYvFDB02OqeByXi3M8phe4Z-- --Vwctarzdn3DJ9ywsoqWH7nBSRHqxdxxMV Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEObZBND2MEEsrFG3D+cOdwLlphUQFAmE5K8YACgkQ+cOdwLlp hUQSkRAAnzhYkc9wJJRedJm5pM0cJ4AHW0jFTkh+EuWrC1QSkblrNqmVxyk2Y68D 1CeuYBIZvWWdjji5FNQXp++vb56pBHPJi/hjIsPz2sghmNqoq8qdyA1kb9OHI2wk L4VD7fgpbq14+fI6RQ9NmiNfEnpxDzUz+yqivTOxI5Z8OVYTYw8cmPBEpH3jtICW Kv7Fghe0TtjxgsqmHqaZJsMSpfW6ol5++06SpDzvXmCos5EHmrQybEZTHJUNP8kk NTw24vzCev0BFjeomYBzJu2/J8igDLWXD2dFvZ1YEur44eXMCfGVseRE8+7cTZ5j mL0wKBwhH4kJublSZ84E1ChwG6m75bCTg2lwZqK3f1wZ/y6t26nFFizFjtgL89WS EYSVKkDJ0UExHpalTv3F7j60DHHtT41LygYzvawgHNqouAfss5I6399cKqB6Xzib 9QsxTJzQidt015e8yoXATpphdF+c3ueDsl89h/JZ9uxJqG4ahsLVtGMaBBVdkoUy zf93qzIMPtyDy5Qy9O6nVafuxA8GvZtC5Ho/P7SSLja2JnpTQ4RBUxwoKf6JMuQO oqwQuGy5zYcIRCO+UhmFUhrEFPYc13HM/+LrARM1cBoNhaJjZRdLbwOw2ZXGJ9+5 Qk0DC5zFKgw7+hOmw7fquhJUDR+GCiyi35vhFhbUSUTnA2BbGG8= =757W -----END PGP SIGNATURE----- --Vwctarzdn3DJ9ywsoqWH7nBSRHqxdxxMV--