php array_cloum
介绍PHP中array_column的函数
PHP中array_column函数用于返回一个数组中指定列的值,该函数可用于多维数组和对象数组。它是在PHP version5.5.0中才加入的函数。其基本的使用方法如下:
$array = array( array('name' => 'Tom', 'age' => 20), array('name' => 'Jerry', 'age' => 22), array('name' => 'Jack', 'age' => 19), array('name' => 'Alex', 'age' => 25) ); $ages = array_column($array, 'age');
上述代码中,我们先定义了一个二维数组,然后我们可以通过array_column函数来获取该数组中的age列,$ages数组的结果就是[20, 22, 19, 25]
使用array_column的多维数组
使用array_column函数,我们也可以对多维数组进行操作。多维数组中,我们可以通过指定$column_key和$index_key参数来控制返回结果的方式。如果我们想获取一个多维数组指定列的值,我们可以这么做:
$array = array( array('name' => 'Tom', 'age' => 20, 'origin' => 'China'), array('name' => 'Jerry', 'age' => 22, 'origin' => 'USA'), array('name' => 'Jack', 'age' => 19, 'origin' => 'UK'), array('name' => 'Alex', 'age' => 25, 'origin' => 'USA') ); $origins = array_column($array, 'origin');
上述代码的结果将是['China', 'USA', 'UK', 'USA']。如果我们传入了$index_key参数,我们将返回一个以$index_key作为键名,$column_key作为键值的数组,像这样:
$array = array( array('id' => 1, 'name' => 'Tom', 'age' => 20, 'origin' => 'China'), array('id' => 2, 'name' => 'Jerry', 'age' => 22, 'origin' => 'USA'), array('id' => 3, 'name' => 'Jack', 'age' => 19, 'origin' => 'UK'), array('id' => 4, 'name' => 'Alex', 'age' => 25, 'origin' => 'USA') ); $origins = array_column($array, 'origin', 'id');
上述代码的结果将是:[1=>'China', 2=>'USA', 3=>'UK', 4=>'USA']。
特殊情况下的array_column函数
array_column函数还有一些特殊的用法需要特别注意,如:返回结果中含有重复的键名。当我们传入的$index_key是字符串类型时,如果结果集中有多个值的索引键相同,只有最后一个值能够获得对应的键名。如果$index_key是null,则每个行将会是结果集数组其中的一列。示例代码:
$array = array( array('id' => 1, 'name' => 'Tom', 'age' => 20), array('id' => 2, 'name' => 'Jerry', 'age' => 22), array('id' => 3, 'name' => 'Jack', 'age' => 19), array('id' => 2, 'name' => 'Alex', 'age' => 25) ); $names = array_column($array, 'name', 'id');
上述代码的结果将是[1 => 'Tom', 2 => 'Alex', 3 => 'Jack'],而不是[1 => 'Tom', 2 => 'Jerry', 3 => 'Jack'],这是由于数组中存在多个id为2的值。如果我们将$index_key修改为null,那么结果将是['Tom', 'Jerry', 'Jack', 'Alex']。
使用array_column的对象数组
array_column函数不仅可以对数组数组进行操作,还可以对对象数组实现同样效果。如果我们把数组中的关联数组按照我们需要的方式给对象化,那么我们就可以像使用对象一样,使用array_column函数了。示例代码:
class Student { public $name; public $age; public $origin; public function __construct($name, $age, $origin) { $this->name = $name; $this->age = $age; $this->origin = $origin; } } $array = array( new Student('Tom', 20, 'China'), new Student('Jerry', 22, 'USA'), new Student('Jack', 19, 'UK'), new Student('Alex', 25, 'USA') ); $names = array_column($array, 'name');
上述代码的结果将是['Tom', 'Jerry', 'Jack', 'Alex']。
array_column的使用场景
使用array_column函数可以很方便的获取数组中指定的一列数据。在实际应用中,这个函数的应用场景还是比较广泛的。如在日志系统中查找某种日志类型的数据、在支付系统中查询某种支付方式的数据、在CRM系统中获取某个用户的联系方式等。总的来说,array_column函数无论是对数据格式转换,还是对数据提取,都提供了很好的操作方式。