3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Test for array_column // available since PHP >= 5.5.0 !! // php.net/manual/function.array-column.php /** * This file is part of the array_column library * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. * * @copyright Copyright (c) 2013 Ben Ramsey <http://benramsey.com> * @license http://opensource.org/licenses/MIT MIT */ if (!function_exists('array_column')) { /** * Returns the values from a single column of the input array, identified by * the $columnKey. * * Optionally, you may provide an $indexKey to index the values in the returned * array by the values from the $indexKey column in the input array. * * @param array $input A multi-dimensional array (record set) from which to pull * a column of values. * @param mixed $columnKey The column of values to return. This value may be the * integer key of the column you wish to retrieve, or it * may be the string key name for an associative array. * @param mixed $indexKey (Optional.) The column to use as the index/keys for * the returned array. This value may be the integer key * of the column, or it may be the string key name. * @return array */ function array_column($input = null, $columnKey = null, $indexKey = null) { // Using func_get_args() in order to check for proper number of // parameters and trigger errors exactly as the built-in array_column() // does in PHP 5.5. $argc = func_num_args(); $params = func_get_args(); if ($argc < 2) { trigger_error("array_column() expects at least 2 parameters, {$argc} given", E_USER_WARNING); return null; } if (!is_array($params[0])) { trigger_error('array_column() expects parameter 1 to be array, ' . gettype($params[0]) . ' given', E_USER_WARNING); return null; } if (!is_int($params[1]) && !is_float($params[1]) && !is_string($params[1]) && $params[1] !== null && !(is_object($params[1]) && method_exists($params[1], '__toString')) ) { trigger_error('array_column(): The column key should be either a string or an integer', E_USER_WARNING); return false; } if (isset($params[2]) && !is_int($params[2]) && !is_float($params[2]) && !is_string($params[2]) && !(is_object($params[2]) && method_exists($params[2], '__toString')) ) { trigger_error('array_column(): The index key should be either a string or an integer', E_USER_WARNING); return false; } $paramsInput = $params[0]; $paramsColumnKey = ($params[1] !== null) ? (string) $params[1] : null; $paramsIndexKey = null; if (isset($params[2])) { if (is_float($params[2]) || is_int($params[2])) { $paramsIndexKey = (int) $params[2]; } else { $paramsIndexKey = (string) $params[2]; } } $resultArray = array(); foreach ($paramsInput as $row) { $key = $value = null; $keySet = $valueSet = false; if ($paramsIndexKey !== null && array_key_exists($paramsIndexKey, $row)) { $keySet = true; $key = (string) $row[$paramsIndexKey]; } if ($paramsColumnKey === null) { $valueSet = true; $value = $row; } elseif (is_array($row) && array_key_exists($paramsColumnKey, $row)) { $valueSet = true; $value = $row[$paramsColumnKey]; } if ($valueSet) { if ($keySet) { $resultArray[$key] = $value; } else { $resultArray[] = $value; } } } return $resultArray; } } $foo = ARRAY(); $foo[0] = ARRAY('key'=>'key0', 'value'=>'value0', 'text'=>'text0', 'int'=>1000); $foo[1] = ARRAY('key'=>'key1', 'value'=>'value1', 'text'=>'text1', 'int'=>1001); $foo[2] = ARRAY('key'=>'key2', 'value'=>'value2', 'text'=>'text2', 'int'=>1002); $foo[3] = ARRAY('key'=>'key3', 'value'=>'value3', 'text'=>'text3', 'int'=>1003); $foo[5] = ARRAY('key'=>'key5', 'value'=>'value5', 'text'=>'text5', 'int'=>1005); $foo[7] = ARRAY('key'=>'key7', 'value'=>'value7', 'text'=>'text7', 'int'=>1007); // reset indexes, set column 'value' as values $result1 = array_column($foo, 'value'); var_export($result1); print "\n\n"; // re-index with column 'key', use column 'value' as values $result2 = array_column($foo, 'value', 'key'); var_export($result2); print "\n\n"; // re-index with column 'int', use column 'value' as values $result3 = array_column($foo, 'value', 'int'); var_export($result3); print "\n\n"; // re-index with column 'int', use COMPLETE ARRAY as values $result4 = array_column($foo, NULL, 'int'); var_export($result4); print "\n\n"; // => Warning: array_column() expects at least 2 parameters, 1 given ... $result101 = array_column(NULL); var_export($result101); print "\n\n"; // => Warning: array_column() expects at least 2 parameters, 1 given ... $result102 = array_column(FALSE); var_export($result102); print "\n\n"; // => Warning: array_column() expects at least 2 parameters, 1 given ... $result103 = array_column('bla'); var_export($result103); print "\n\n"; ?>
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
array ( 0 => 'value0', 1 => 'value1', 2 => 'value2', 3 => 'value3', 4 => 'value5', 5 => 'value7', ) array ( 'key0' => 'value0', 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3', 'key5' => 'value5', 'key7' => 'value7', ) array ( 1000 => 'value0', 1001 => 'value1', 1002 => 'value2', 1003 => 'value3', 1005 => 'value5', 1007 => 'value7', ) array ( 1000 => array ( 'key' => 'key0', 'value' => 'value0', 'text' => 'text0', 'int' => 1000, ), 1001 => array ( 'key' => 'key1', 'value' => 'value1', 'text' => 'text1', 'int' => 1001, ), 1002 => array ( 'key' => 'key2', 'value' => 'value2', 'text' => 'text2', 'int' => 1002, ), 1003 => array ( 'key' => 'key3', 'value' => 'value3', 'text' => 'text3', 'int' => 1003, ), 1005 => array ( 'key' => 'key5', 'value' => 'value5', 'text' => 'text5', 'int' => 1005, ), 1007 => array ( 'key' => 'key7', 'value' => 'value7', 'text' => 'text7', 'int' => 1007, ), ) Fatal error: Uncaught ArgumentCountError: array_column() expects at least 2 arguments, 1 given in /in/p2SrD:156 Stack trace: #0 /in/p2SrD(156): array_column(NULL) #1 {main} thrown in /in/p2SrD on line 156
Process exited with code 255.
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
array ( 0 => 'value0', 1 => 'value1', 2 => 'value2', 3 => 'value3', 4 => 'value5', 5 => 'value7', ) array ( 'key0' => 'value0', 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3', 'key5' => 'value5', 'key7' => 'value7', ) array ( 1000 => 'value0', 1001 => 'value1', 1002 => 'value2', 1003 => 'value3', 1005 => 'value5', 1007 => 'value7', ) array ( 1000 => array ( 'key' => 'key0', 'value' => 'value0', 'text' => 'text0', 'int' => 1000, ), 1001 => array ( 'key' => 'key1', 'value' => 'value1', 'text' => 'text1', 'int' => 1001, ), 1002 => array ( 'key' => 'key2', 'value' => 'value2', 'text' => 'text2', 'int' => 1002, ), 1003 => array ( 'key' => 'key3', 'value' => 'value3', 'text' => 'text3', 'int' => 1003, ), 1005 => array ( 'key' => 'key5', 'value' => 'value5', 'text' => 'text5', 'int' => 1005, ), 1007 => array ( 'key' => 'key7', 'value' => 'value7', 'text' => 'text7', 'int' => 1007, ), ) Warning: array_column() expects at least 2 parameters, 1 given in /in/p2SrD on line 156 NULL Warning: array_column() expects at least 2 parameters, 1 given in /in/p2SrD on line 160 NULL Warning: array_column() expects at least 2 parameters, 1 given in /in/p2SrD on line 164 NULL
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45
array ( 0 => 'value0', 1 => 'value1', 2 => 'value2', 3 => 'value3', 4 => 'value5', 5 => 'value7', ) array ( 'key0' => 'value0', 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3', 'key5' => 'value5', 'key7' => 'value7', ) array ( 1000 => 'value0', 1001 => 'value1', 1002 => 'value2', 1003 => 'value3', 1005 => 'value5', 1007 => 'value7', ) array ( 1000 => array ( 'key' => 'key0', 'value' => 'value0', 'text' => 'text0', 'int' => 1000, ), 1001 => array ( 'key' => 'key1', 'value' => 'value1', 'text' => 'text1', 'int' => 1001, ), 1002 => array ( 'key' => 'key2', 'value' => 'value2', 'text' => 'text2', 'int' => 1002, ), 1003 => array ( 'key' => 'key3', 'value' => 'value3', 'text' => 'text3', 'int' => 1003, ), 1005 => array ( 'key' => 'key5', 'value' => 'value5', 'text' => 'text5', 'int' => 1005, ), 1007 => array ( 'key' => 'key7', 'value' => 'value7', 'text' => 'text7', 'int' => 1007, ), ) Warning: array_column() expects at least 2 parameters, 1 given in /in/p2SrD on line 49 NULL Warning: array_column() expects at least 2 parameters, 1 given in /in/p2SrD on line 49 NULL Warning: array_column() expects at least 2 parameters, 1 given in /in/p2SrD on line 49 NULL

preferences:
299.14 ms | 405 KiB | 366 Q