Учитывая следующий 2D-массив:
$data_info_array = array(
array(
'score' => '100',
'name' => 'Alice',
'subject' => 'Data Structures'
),
array(
'score' => '50',
'name' => 'Bob',
'subject' => 'Advanced Algorithms'
),
array(
'score' => '75',
'name' => 'Charlie',
'subject' => 'Distributed Computing'
)
);
// this gets the key when I search for the score of 50 from one column
$index = array_search('50', array_column($data_info_array, 'score'));
echo $index;
Если я хочу выполнить поиск по двум значениям, я могу думать только о чем-то вроде:
$index1 = array_search('50', array_column($data_info_array, 'score'));
$index2 = array_search('Bob', array_column($data_info_array, 'name'));
$real_index = ( $index1 === $index2 ) ? $index1 : null;
Есть ли способ, которым я могу искать счет «50» и имя «Боб» вместе и получить индекс для этого, только если эта комбинация существует? Есть ли лучший способ сделать, чем то, что я придумал?
array_intersect_assoc($search, $v)
, верно, @Cas? 28.03.2021array_intersect_assoc()
, но не уверены, что получите что-то более производительное или более безопасное, потому что в порядке сравнение решает, присутствует ли элемент или нет, и без правильных ключей сравнение возвращаетfalse
независимо от значений на пересечении. 29.03.2021array_intersect(['50', 'Bob', 'score'=>'50', 'name'=>'Bob'],['score' => '50', 'name' => 'Bob'])
. 29.03.2021