如何获取php、laravel中关联数组的特定部分?
How to get a particular part of associative array in php, laravel?
我有这样的数组
$data = [
'phone' => '9999999999',
'body' => 'Sample Message',
'caption' => 'Sample',
'filename' => 'Sample File.PDF'
];
我想从数组中获取特定部分到另一个数组中,例如
$t_data = [
'phone' => '9999999999',
'body' => 'Sample Message'
];
怎么做?
而且应该是单行函数
如果你想获取数组的一部分,你可以这样做:
array_slice($data, 0, 2);
从零位置开始取前两个值。
您可以使用 laravel 助手 array_only():
$t_data = array_only($data, ["phone", "body"]);
试试这个
$t_data = [
'phone' =>$data['phone'],
'body'=>$data['body']
];
像这样
print_r(array_intersect_key($data, ['phone'=>0,'body'=>0]));
输出
Array
(
[phone] => 9999999999
[body] => Sample Message
)
或作为函数
function getArrayItems(array $array,$items,$separator=','){
if(!is_array($items)) $items = array_filter(array_map('trim',explode($separator,$items)),function($i){
return strlen($i);
});
return array_intersect_key($array, array_flip($items));
}
$data = [
'phone' => '9999999999',
'body' => 'Sample Message',
'caption' => 'Sample',
'filename' => 'Sample File.PDF'
];
print_r(getArrayItems($data, 'body')); // returns [body=>'Sample Message']
print_r(getArrayItems($data, ['body'])); // returns [body=>'Sample Message']
print_r(getArrayItems($data, ['body','caption'])); // returns [body=>'Sample Message','caption' => 'Sample']
print_r(getArrayItems($data, 'body,caption')); // returns [body=>'Sample Message','caption'=>'Sample']
print_r(getArrayItems($data, ' body , caption ')); // returns [body=>'Sample Message','caption'=>'Sample']
print_r(getArrayItems($data, 'body|caption','|')); // returns [body=>'Sample Message','caption'=>'Sample']
我有这样的数组
$data = [
'phone' => '9999999999',
'body' => 'Sample Message',
'caption' => 'Sample',
'filename' => 'Sample File.PDF'
];
我想从数组中获取特定部分到另一个数组中,例如
$t_data = [
'phone' => '9999999999',
'body' => 'Sample Message'
];
怎么做? 而且应该是单行函数
如果你想获取数组的一部分,你可以这样做:
array_slice($data, 0, 2);
从零位置开始取前两个值。
您可以使用 laravel 助手 array_only():
$t_data = array_only($data, ["phone", "body"]);
试试这个
$t_data = [
'phone' =>$data['phone'],
'body'=>$data['body']
];
像这样
print_r(array_intersect_key($data, ['phone'=>0,'body'=>0]));
输出
Array
(
[phone] => 9999999999
[body] => Sample Message
)
或作为函数
function getArrayItems(array $array,$items,$separator=','){
if(!is_array($items)) $items = array_filter(array_map('trim',explode($separator,$items)),function($i){
return strlen($i);
});
return array_intersect_key($array, array_flip($items));
}
$data = [
'phone' => '9999999999',
'body' => 'Sample Message',
'caption' => 'Sample',
'filename' => 'Sample File.PDF'
];
print_r(getArrayItems($data, 'body')); // returns [body=>'Sample Message']
print_r(getArrayItems($data, ['body'])); // returns [body=>'Sample Message']
print_r(getArrayItems($data, ['body','caption'])); // returns [body=>'Sample Message','caption' => 'Sample']
print_r(getArrayItems($data, 'body,caption')); // returns [body=>'Sample Message','caption'=>'Sample']
print_r(getArrayItems($data, ' body , caption ')); // returns [body=>'Sample Message','caption'=>'Sample']
print_r(getArrayItems($data, 'body|caption','|')); // returns [body=>'Sample Message','caption'=>'Sample']