Получить элементы массива по условию
Как на php получить из всего массива только элементы у которых у [field_id] => 385229 value = 6098759?
Array
(
[0] => Array
(
[id] => 19768557
[custom_fields_values] => Array
(
[0] => Array
(
[field_id] => 385229
[values] => Array
(
[0] => Array
(
[value] => 2424324
)
)
)
)
)
[1] => Array
(
[id] => 19840535
[custom_fields_values] => Array
(
[0] => Array
(
[field_id] => 385229
[values] => Array
(
[0] => Array
(
[value] => 6098759
)
)
)
)
)
[2] => Array
(
[id] => 19840529
[custom_fields_values] => Array
(
[0] => Array
(
[field_id] => 385229
[values] => Array
(
[0] => Array
(
[value] => 56765757
)
)
)
)
)
[3] => Array
(
[id] => 19840523
[custom_fields_values] => Array
(
[0] => Array
(
[field_id] => 385229
[values] => Array
(
[0] => Array
(
[value] => 6098759
)
)
)
)
)
[4] => Array
(
[id] => 19840517
[custom_fields_values] => Array
(
[0] => Array
(
[field_id] => 385229
[values] => Array
(
[0] => Array
(
[value] => 6098759
)
)
)
)
)
[5] => Array
(
[id] => 19769763
[custom_fields_values] => Array
(
[0] => Array
(
[field_id] => 385229
[values] => Array
(
[0] => Array
(
[value] => 78778878
)
)
)
)
)
[6] => Array
(
[id] => 19769031
[custom_fields_values] => Array
(
[0] => Array
(
[field_id] => 385229
[values] => Array
(
[0] => Array
(
[value] => 324342324
)
)
)
)
)
)
Ответы (2 шт):
Автор решения: Dev_Prod
→ Ссылка
Примерно так:
<?php
$array = [
[
'id' => 19768557,
'custom_fields_values' =>
[
[
'field_id' => 385229,
'values' => [
'value' => 2424324
]
]
]
],
[
'id' => 1976852257,
'custom_fields_values' =>
[
[
'field_id' => 385229,
'values' => [
'value' => 6098759
]
]
]
]
];
echo '<pre>';
print_r(
array_filter(
$array,
function ($data) {
foreach ($data['custom_fields_values'] as $ar) {
if ($ar['field_id'] === 385229) {
foreach ($ar['values'] as $value) {
if ($value === 6098759) {
return $data;
}
}
}
}
}
)
);
Вывод такой:
Array
(
[1] => Array
(
[id] => 1976852257
[custom_fields_values] => Array
(
[0] => Array
(
[field_id] => 385229
[values] => Array
(
[value] => 6098759
)
)
)
)
)
Автор решения: Вадим Никитин
→ Ссылка
Пример вашего кода из задачи
$arTmp = [];
$tmp = [
0 => [
'id' => 19768557,
'custom_fields_values' => [
0 => [
'field_id' => 385229,
'values' => [
0 => [
'value' => 2424324
]
]
]
]
],
1 => [
'id' => 19840535,
'custom_fields_values' => [
0 => [
'field_id' => 385229,
'values' => [
0 => [
'value' => 6098759
]
]
]
]
],
2 => [
'id' => 19840529,
'custom_fields_values' => [
0 => [
'field_id' => 385229,
'values' => [
0 => [
'value' => 56765757
]
]
]
]
]
];
Ищем что нужно
foreach($tmp as $field)
{
$field_tmp = $field['custom_fields_values'][0];
if($field_tmp['field_id'] == 385229 && $field_tmp['values'][0]['value'] == 6098759)
$arTmp[] = $field;
}
echo '<pre>';
print_r($arTmp);
echo '</pre>';