У меня есть массив вроде
$data = [
'phone' => '9999999999',
'body' => 'Sample Message',
'caption' => 'Sample',
'filename' => 'Sample File.PDF'
];
Я хочу получить определенную часть из массива в другой массив, например
$t_data = [
'phone' => '9999999999',
'body' => 'Sample Message'
];
как это сделать? И это должна быть однострочная функция
Привет, посмотрите, пожалуйста, на этот руководство, как задавать хорошие вопросы. чего не хватает, это то, что вы пробовали до сих пор?
Я бы сделал что-нибудь странное, например: $res = array_intersect_key($data, ['phone'=>0,'body'=>0])Песочница. Просто чтобы запутать младших разработчиков, когда они должны документировать это для меня .... :-D
Не потому, что мне нужна однострочная функция, такая как ответ, который я отметил для этого вопроса.
Пожалуйста, отметившие этот вопрос как бесполезный, измените его, примите его как просьбу. Я считаю, что это полезно, и я также отметил правильный ответ ниже.






Если вы хотели взять кусок массива, вы можете сделать следующее:
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']
$t_data=array(); $t_data['phone']=$data['phone']; $t_data['body']=$data['body'];это слишком широкий вопрос