TransWikia.com

Проверить наличие определённого значения элемента многомерного массива по ключу

Stack Overflow на русском Asked on December 19, 2021

Доброе время суток, есть массив $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 Answers

array_key_exists() ищет ключи только на первом уровне массива. Внутренние ключи в многомерных массивах найдены не будут. php.net

$json['isset'] = in_array('2', array_column($doctor_categories, 'doctor_category_id')); // true 1/false 0

Answered by Kirill on December 19, 2021

Попробуйте так:

<?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

Answered by Давид Манжула on December 19, 2021

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';
}

Answered by NoSkill on December 19, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP