У меня этот многомерный массив:
$arr = array(
array(
array(
'page_id' => '75',
'book_color' => 'red',
'book_name' => 'Bible - patch nr. 593',
),
),
array(
array(
array(
'page_id' => '85',
'book_color' => 'blue',
'book_name' => 'Bible',
),
array(
'page_id' => '84',
'book_color' => 'black',
'book_name' => 'Bible - extended version',
),
array(
'page_id' => '83',
'book_color' => 'green',
'book_name' => 'Bible - for children and Americans',
),
),
array(
'page_id' => '68',
'book_color' => 'green',
'book_name' => 'Bible - Quran mashup',
),
),
array(
'page_id' => '96',
'book_color' => 'yellow',
'book_name' => 'Bible - patch nr. 594',
),
);
И мне нужно проверить, содержит ли этот массив эту пару ключ => значение:
'book_name' => 'Bible'
Таким образом, как вы можете видеть, это может быть в первом подмассиве или во втором или даже внутри более вложенных массивов.
Как сделать проверку, которая может вернуть true или false в зависимости от того, найден ли, независимо от того, на каком уровне эта пара ключей и значений.
Вы можете использовать array_walk_recursive
здесь, например, как
$book_name = [];
array_walk_recursive($arr, function($v, $k)use(&$book_name) {
if ($k == 'book_name') {
$book_name[$v] = (strpos($v,"Bible") !== false) ? "Found" : "God not found";
}
});
print_r($book_name);