Nice: Simplified operation, batch processing of array_walk, reference, and low internal consumption.
Application scenario: mainly used to process record sets (two-dimensional arrays) 1. integrate the result set (one-dimensional array, such as ids: [,]. list of winning usernames: ['xiong Ming', 'lijia ', 'erlang Shenzhen']) 2. key-value pairs (one-dimensional arrays, such as tags: array ('mysql' => 'url1', 'php' => 'url2']) 3. cached file data (id => info)
Note: php5.5 is used as a built-in function. Note the naming conflict before use.
From (EQPHP tool class): https://github.com/eqphp/framework/blob/master/www/class/fun.php
Demo: http://www.eqphp.com/blog/list/
- // Process the record set (php5.5 built-in)
- Static function array_column ($ data, $ key = 'id', $ column = null ){
- $ Buffer = null;
- If ($ column ){
- // K => v
- If (strpos ($ column, ',') = false ){
- Foreach ($ data as $ value ){
- $ Buffer [$ value [$ key] = $ value [$ column];
- }
- Return $ buffer;
- }
- // K = arr
- $ Field = explode (',', $ column );
- Foreach ($ data as $ value ){
- $ Id = $ value [$ key];
- Array_walk ($ value, function ($ v, $ k) use (& $ value, $ field ){
- If (! In_array ($ k, $ field) unset ($ value [$ k]);
- });
- $ Buffer [$ id] = $ value;
- }
- Return $ buffer;
- }
- // Id_arr
- Foreach ($ data as $ value ){
- $ Buffer [] = $ value [$ key];
- }
- Return $ buffer;
- }
- // Usage demo:
- // Original record set:
- $ Data = array (
- Array ('id' => 1, 'name' => 'dubox', 'age' => 25, 'girlfriend' => 'soda green '),
- Array ('id' => 4, 'name' => 'Xiao chun', 'age' => 21, 'girlfriend' => 'Unknown '),
- Array ('id' => 9, 'name' => 'id', 'age' => 71, 'girlfriend' => 'widow '),
- );
- $ Ids = array_column ($ data, 'id ');
- // Out: array (1, 4, 9 );
- $ Info = array_column ($ data, 'name', 'girlfriend ');
- // Out: array ('dubox' => 'soda Green', 'Little Chung' => 'Don't know ', 'id' => 'widow ');
- $ Cache = array_column ($ data, 'id', 'name, age, Girlfriend ');
- // Out: array (
- 1 => array ('name' => 'dubox', 'age' => 25, 'girlfriend' => 'soda green '),
- 4 => array ('name' => 'Spring sub', 'age' => 21, 'girlfriend' => 'Unknown '),
- 9 => array ('name' => 'id', 'age' => 71, 'girlfriend' => 'widow '),
- );
|