Есть массив вида
$array = [
'name' => 'Имя',
'surname' => 'Фамилия',
'phone1' => '+79091111111',
'phone2' => '+79092222222'
];
Количество элементов с ключами начинающимися на phone неизвестно. Как можно выбрать все такие элементы?
Стандартная функция array_filter
осуществляет фильтрацию массива, используя функцию обратного вызова, которая может принимать либо значения, либо значения и ключи.
Внутри функции вам требуется определить, подходит вам текущий ключ или нет. Способов определить, начинается ли строка с искомой не мало.
$result = array_filter($data, function($v, $k){
return strpos($k, "phone") === 0;
}, ARRAY_FILTER_USE_BOTH);
Как вариант:
$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);
$array = [
'name' => 'Имя',
'surname' => 'Фамилия',
'phone1' => '+79091111111',
'phone2' => '+79092222222'
];
$search = 'phone';
foreach ($array as $key => $value)
{
if($search == substr($key,0,strlen($search)))
$result[] = $value
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В методах класса иногда приходиться работать с сессиямиВопрос:
Не могу сообразить как сделать данноеВ процессе выполнения php скрипта мне нужно запустить еще один php файл
Считаю вопрос очень важным так как нигде ранее не встречал, поиск всех значений по одной большой таблице в которую они все записаны
С помощью кода ниже сохраняю картинки на хостинге и записываю их имена в БД