獲取二維數組中指定字段的值,而且將值組成一維數組

從數據庫獲取多個數據時每每是二維數組,可是有時候咱們須要獲取數組裏面的某一鍵的數據。有兩種方法:foreach()循環和Array()函數android

示例數組,獲取二維數組裏面的device_token的值而且放在一維數組裏面:ios

$arr = array(
0 => array(
'device_token' => 'AnBWyVMD1u0qKkNrD44h8BaFjROX5qCRgDjEG6CCFtFd',
'shebei' => 'android'
),
1 => array(
'device_token' => 'Ap0pTms6pvxMtsvrqCvzbqknLkO6KEIJnk3x9iGYlgd8',
'shebei' => 'android'
),
2 => array(
'device_token' => '6aa7d1356e75a56758a0fdc40b776d0cab7fa8889de546106888d3b3c5eee872',
'shebei' => 'ios'
),
3 => array(
'device_token' => '9e9854b6b6f02c58aa8838619b25e18139558dca9f69e2abbc6f9b88630ff269',
'shebei' => 'ios'
),
4 => array(
'device_token' => 'ApKqVYFWWXNds9CnveE24ysTZ942nw5P2o5lE6KJegqg',
'shebei' => 'android'
),
5 => array(
'device_token' => '',
'shebei' => 'ios'
),
  6 => array(
    'device_token' => 0,
    'shebei' => 'android'
  )
);

1、foreach()循環
$IOS_token = array();
$android_token = array();
if(!empty($arr) && count($res) != 0){
foreach($arr as $key => $val){
if($val['shebei'] == 'android'){
$android_token[] = $val['device_token'];
}elseif($val['shebei'] == 'ios'){
$IOS_token[] = $val['device_token'];
}
}
}

2、Array()函數
$ios_res = array_column(array_filter($arr,function($val){
if($val['shebei'] == 'ios'){
return $val['device_token'];
}else{
return false;
}
}),'device_token');
$android_res = array_column(array_filter($arr,function($value){
if($value['shebei'] == 'android'){
return $value['device_token'];
}else{
return false;
}
}),'device_token');

返回結果一維數組:
Array ( [ios] => Array ( [0] => 6aa7d1356e75a56758a0fdc40b776d0cab7fa8889de546106888d3b3c5eee872 [1] => 9e9854b6b6f02c58aa8838619b25e18139558dca9f69e2abbc6f9b88630ff269 ) [android] => Array ( [0] => AnBWyVMD1u0qKkNrD44h8BaFjROX5qCRgDjEG6CCFtFd [1] => Ap0pTms6pvxMtsvrqCvzbqknLkO6KEIJnk3x9iGYlgd8 [2] => ApKqVYFWWXNds9CnveE24ysTZ942nw5P2o5lE6KJegqg ) )

原始數組$arr中ios其實有三個,可是有一個是空值,因此array_filter()函數給過濾掉了;android分類下的0也被過濾掉了。

注意點:array_filter會過濾掉任何等於FALSE的值,也就是說  0值,空字符串,null,都會被過濾
相關文章
相關標籤/搜索