Проверить наличие определённого значения элемента многомерного массива по ключу
Доброе время суток, есть массив $categories
Array (
[0] => Array (
[category_id] => 1
[item_id] => 63
[qualification_category_id] => 0
)
[1] => Array (
[category_id] => 3
[item_id] => 63
[qualification_category_id] => 1
)
[2] => Array (
[category_id] => 4
[item_id] => 63
[qualification_category_id] => 0
)
)
и есть id категории, ее нужно проверить на существование в массиве... 2 дня мучаюсь эффекта 0
if (array_key_exists('2', $categories)) {
$json['isset '] = true;
} else {
$json['isset '] = false;
}
Вот этот вариант почему то не сработал (
Ответы (3 шт):
Автор решения: NoSkill
→ Ссылка
function hasEqualProp($array, $prop, $value) {
foreach ($array as $subarr) {
if (isset($subarr[$prop]) and $subarr[$prop] == $value) {
return true;
}
}
return false;
}
-----
if (hasEqualProp($doctor_categories, 'doctor_category_id', '2')) {
echo 'found';
} else {
echo 'not found';
}
Автор решения: Давид Манжула
→ Ссылка
Попробуйте так:
<?php
$search_category_id = 2;
$found = array_filter($doctor_categories, function($doctor) use ($search_category_id){
return $doctor["doctor_category_id"] == $search_category_id;
});
$has_category = !empty($found); // true - есть, false - нету
print_r($found); // Все у кого категория = 2
Автор решения: Kirill
→ Ссылка
array_key_exists() ищет ключи только на первом уровне массива. Внутренние ключи в многомерных массивах найдены не будут. php.net
$json['isset'] = in_array('2', array_column($doctor_categories, 'doctor_category_id')); // true 1/false 0