Req #73735 [Com]: array_column keys should be preserved
Edit report at https://bugs.php.net/bug.php?id=73735&edit=1
ID: 73735
Comment by: photon0 at gmail dot com
Reported by: photon0 at gmail dot com
Summary: array_column keys should be preserved
Status: Open
Type: Feature/Change Request
Package: Arrays related
Operating System: ANY
PHP Version: Next Minor Version
Block user comment: N
Private report: N
New Comment:
I always saw PHP's arrays as a Swiss army knife for data manipulation. If you say this would be
difficult to implement or would result in less than optimal performance I refer entirely to your
judgment.
The only disadvantage I see to the workaround is the performance. Calling 3 functions is clearly
slower than using just one.
That said, your point is valid and this request was just a suggestion.
Previous Comments:
------------------------------------------------------------------------
[2016-12-14 03:23:59] requinix@php.net
As default behavior it makes sense, but it should be possible to explicitly invoke the behavior
using arguments and I'm not sure how the change could be squeezed into the function. NULL as
the $index_key?
Anyway, the workaround is trivial:
array_combine(array_keys($items), array_column($items, "id"))
------------------------------------------------------------------------
[2016-12-13 21:27:05] photon0 at gmail dot com
Description:
------------
It would increase the usability of this function if it could preserve the array's keys in the
result.
I was expecting this to be the default behaviour.
best regards,
David Lévêsque
Test script:
---------------
$items = array(
1 => ["id" => 1],
2 => ["id" => 4],
3 => ["id" => 9],
"four" => ["id" => 16]
);
var_dump(array_column($items,"id"));
Expected result:
----------------
array(4) { [0]=> int(1) [1]=> int(4) [2]=> int(9) ["four"]=> int(16) }
Actual result:
--------------
array(4) { [0]=> int(1) [1]=> int(4) [2]=> int(9) [3]=> int(16) }
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=73735&edit=1
Thread (4 messages)