PHP Выбор из массива по части имени ключа

195
04 января 2019, 09:20

Есть массив вида

$array = [
   'name' => 'Имя',
   'surname' => 'Фамилия',
   'phone1' => '+79091111111',
   'phone2' => '+79092222222'
];

Количество элементов с ключами начинающимися на phone неизвестно. Как можно выбрать все такие элементы?

Answer 1

Стандартная функция array_filter осуществляет фильтрацию массива, используя функцию обратного вызова, которая может принимать либо значения, либо значения и ключи.
Внутри функции вам требуется определить, подходит вам текущий ключ или нет. Способов определить, начинается ли строка с искомой не мало.

$result = array_filter($data, function($v, $k){
                  return strpos($k, "phone") === 0;
            }, ARRAY_FILTER_USE_BOTH);
Answer 2

Как вариант:

$array = [
    'name' => 'Имя',
    'surname' => 'Фамилия',
    'phone1' => '+79091111111',
    'phone2' => '+79092222222'
];
$result = preg_grep('/phone\d+/', array_keys($array));
foreach ($array as $key => $value)
{
    if (!in_array($key, $result))
        unset($array[$key]);
}
print_r($array);

Или же такой вариант:

$r = array_intersect_key($array, array_flip(preg_grep('/phone\d+/', array_keys($array))));
print_r($r);
Answer 3
$array = [
    'name' => 'Имя',
    'surname' => 'Фамилия',
    'phone1' => '+79091111111',
    'phone2' => '+79092222222'
];
$search = 'phone';
foreach ($array as $key => $value)
{
  if($search == substr($key,0,strlen($search)))
    $result[] = $value
}
READ ALSO
в правильном ли месте вызываю session_start()?

в правильном ли месте вызываю session_start()?

В методах класса иногда приходиться работать с сессиямиВопрос:

177
Фоново запустить в процессе выполнения php скрипта другой скрипт

Фоново запустить в процессе выполнения php скрипта другой скрипт

Не могу сообразить как сделать данноеВ процессе выполнения php скрипта мне нужно запустить еще один php файл

180
Как выбрать данные из нескольких таблиц с фильтрацией по определенным значениям

Как выбрать данные из нескольких таблиц с фильтрацией по определенным значениям

Считаю вопрос очень важным так как нигде ранее не встречал, поиск всех значений по одной большой таблице в которую они все записаны

163
Указание места хранения файла

Указание места хранения файла

С помощью кода ниже сохраняю картинки на хостинге и записываю их имена в БД

172