Как получить ту или иную часть ассоциативного массива в php, laravel?

У меня есть массив вроде

$data = [
    'phone' => '9999999999',
    'body' => 'Sample Message',
    'caption' => 'Sample',
    'filename' => 'Sample File.PDF'
];

Я хочу получить определенную часть из массива в другой массив, например

$t_data = [
    'phone' => '9999999999',
    'body' => 'Sample Message'
];

как это сделать? И это должна быть однострочная функция

$t_data=array(); $t_data['phone']=$data['phone']; $t_data['body']=$data['body']; это слишком широкий вопрос
Bilal Ahmed 24.10.2018 07:49

Привет, посмотрите, пожалуйста, на этот руководство, как задавать хорошие вопросы. чего не хватает, это то, что вы пробовали до сих пор?

Jan 24.10.2018 07:50

Я бы сделал что-нибудь странное, например: $res = array_intersect_key($data, ['phone'=>0,'body'=>0])Песочница. Просто чтобы запутать младших разработчиков, когда они должны документировать это для меня .... :-D

ArtisticPhoenix 24.10.2018 07:52

Не потому, что мне нужна однострочная функция, такая как ответ, который я отметил для этого вопроса.

Hariprasath Yadav 24.10.2018 08:33

Пожалуйста, отметившие этот вопрос как бесполезный, измените его, примите его как просьбу. Я считаю, что это полезно, и я также отметил правильный ответ ниже.

Hariprasath Yadav 20.11.2019 10:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
5
152
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Если вы хотели взять кусок массива, вы можете сделать следующее:

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']

Песочница

Другие вопросы по теме