Я хочу проверить значение key=>value
в массиве, сколько раз существует. Я приводил здесь пример. чтобы проверить его, появляется ли Array [DriverLocation] [driver_id] = 83 в следующем массиве 3 раза. это я собираюсь сделать, если одно и то же ключевое значение существует, тогда удалите этот внутренний массив и продолжайте получать данные о сиблях. пример:
Array
(
[0] => Array
(
[DriverLocation] => Array
(
[id] => 15
[dispensary_id] => 1
[driver_id] => 85
[zip_code_id] => 43
[created] => 2015-05-20 12:25:34
)
[ZipCode] => Array
(
[id] => 43
[province_id] => 3846
[city] => Rohtak
[zip_code] => 15478
[status] => active
)
[UserProfile] => Array
(
[first_name] => Arman
[last_name] => Kumar
)
)
[1] => Array
(
[DriverLocation] => Array
(
[id] => 19
[dispensary_id] => 1
[driver_id] => 43
[zip_code_id] => 42
[created] => 2015-05-20 12:37:12
)
[ZipCode] => Array
(
[id] => 42
[province_id] => 3846
[city] => Rohtak
[zip_code] => 30215
[status] => active
)
[UserProfile] => Array
(
[first_name] => Pawan
[last_name] => Kumar
)
)
[2] => Array
(
[DriverLocation] => Array
(
[id] => 20
[dispensary_id] => 1
[driver_id] => 83
[zip_code_id] => 42
[created] => 2015-05-20 12:37:28
)
[ZipCode] => Array
(
[id] => 42
[province_id] => 3846
[city] => Rohtak
[zip_code] => 30215
[status] => active
)
[UserProfile] => Array
(
[first_name] => Ramesh
[last_name] => Saini
)
)
[3] => Array
(
[DriverLocation] => Array
(
[id] => 26
[dispensary_id] => 1
[driver_id] => 83
[zip_code_id] => 43
[created] => 2015-05-20 12:43:59
)
[ZipCode] => Array
(
[id] => 43
[province_id] => 3846
[city] => Rohtak
[zip_code] => 15478
[status] => active
)
[UserProfile] => Array
(
[first_name] => Ramesh
[last_name] => Saini
)
)
[4] => Array
(
[DriverLocation] => Array
(
[id] => 41
[dispensary_id] => 1
[driver_id] => 83
[zip_code_id] => 6
[created] => 2015-05-21 05:23:53
)
[ZipCode] => Array
(
[id] => 6
[province_id] => 3846
[city] => Whittier
[zip_code] => 90607
[status] => active
)
[UserProfile] => Array
(
[first_name] => Ramesh
[last_name] => Saini
)
)
)
Вы можете с PHP5.5 использовать в 2 раза функцию array_column. Эта функция помещает все значения этого ключа в массив.
$driver_ids = array_column(array_column($array, 'DriverLocation'), 'driver_id');
print_r(array_count_values($driver_ids));
Result:
Array ( [85] => 1 [43] => 1 [83] => 3 )
Или PHP версии до 5.5:
$driver_ids = array_map(function ($ar) {return $ar['DriverLocation']['driver_id'];}, $array);
print_r(array_count_values($driver_ids));
В качестве альтернативы, если вы просто хотите, чтобы первая запись 83
идентификатором драйвера, вы можете сначала собрать все значения, поместить их в другой контейнер и только поместить туда первые и использовать его в качестве ключа.
Просто добавьте условие, в котором, если его еще нет, поместите его внутрь, если его там уже нет, поэтому в конце вы оставите только первую уникальную запись каждого драйвера.
$drivers = array();
foreach($data as $k => $values) {
if(!isset($drivers[$values['DriverLocation']['driver_id']])) {
$drivers[$values['DriverLocation']['driver_id']] = $values;
}
}
// $drivers = array_values($drivers); // optional array re-index
Вы можете использовать array_filter
и count
на это:
echo count(array_filter($array,function($element){
if(isset($element['DriverLocation']['driver_id'])) {
return $element['DriverLocation']['driver_id'] === 83;
}
}));
используйте array_key_exists()
.