php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #73735 array_column keys should be preserved
Submitted: 2016-12-13 21:27 UTC Modified: 2016-12-14 03:23 UTC
From: photon0 at gmail dot com Assigned:
Status: Open Package: Arrays related
PHP Version: Next Minor Version OS: ANY
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please — but make sure to vote on the bug!
Your email address:
MUST BE VALID
Solve the problem:
49 + 4 = ?
Subscribe to this entry?

 
 [2016-12-13 21:27 UTC] 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) }

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2016-12-14 03:23 UTC] 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-14 15:30 UTC] photon0 at gmail dot com
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.
 
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Tue Mar 31 23:01:23 2020 UTC