[英]Get multi column from array php, Alternate of array_column
我已經使用這個函數從數組中獲取多列。 array_column 的替代。 我創建了這個函數,因為 array_column 不能根據我的要求工作。
我的資料
$students =
Array
(
[0] => stdClass Object
(
[id] => 498
[uuid] => 6cb91efd-9111-4be8-a2d7-80d3edeed732
[name] => Andrew A. Blaine
[email] => student14@gmail1.com
[usertype_id] => 6
[first_name] => Andrew A.
[last_name] => Blaine
)
[1] => stdClass Object
(
[id] => 499
[uuid] => 208764a0-c53d-404b-ad05-ee7cba28a51c
[name] => Billie C. Heath
[email] => student15@gmail1.com
[usertype_id] => 6
[first_name] => Billie C.
[last_name] => Heath
)
)
我的功能
public function filterArrayByKeys($data, $keys = array()) {
$filterData = array_map(function($e) use ($keys) {
if (is_object($e)) {
foreach ($keys as $key) {
$filterArray[$key] = $e->$key;
}
return $filterArray;
} else {
foreach ($keys as $key) {
$filterArray[$key] = $e[$key];
}
return $filterArray;
}
}, $data);
return array_values(array_unique($filterData, SORT_REGULAR));
}
$students = $this->filterArrayByKeys($students, ['id', 'name', 'email']);
現在我的結果如我所料:
$students = Array
(
[0] => Array
(
[id] => 498
[name] => Andrew A. Blaine
[email] => student14@gmail1.com
)
[1] => Array
(
[id] => 499
[name] => Billie C. Heath
[email] => student15@gmail1.com
)
)
您可以使用此函數從數組中獲取多列。 希望這會幫助你。
有自定義功能來實現這一點,
public function filterArrayByKeys(array $input, array $column_keys)
{
$result = array();
$column_keys = array_flip($column_keys); // getting keys as values
foreach ($input as $key => $val) {
// getting only those key value pairs, which matches $column_keys
$result[$key] = array_intersect_key($val, $column_keys);
}
return $result;
}
$a = $this->filterArrayByKeys($students, ['id','name','email']);
print_r($a);
array_flip — 將所有鍵與數組中的關聯值交換
array_intersect_key — 使用用於比較的鍵計算數組的交集
輸出
Array
(
[0] => Array
(
[id] => 498
[name] => Andrew A. Blaine
[email] => student14@gmail1.com
)
[1] => Array
(
[id] => 499
[name] => Billie C. Heath
[email] => student15@gmail1.com
)
)
工作演示。
來源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.