У меня есть массив со значениями, основанными на конкретном проигрывателе, и я хочу использовать некоторые из этих значений (match_id и minutes) для сравнения со вторым массивом, а затем создать третий массив для хранения возвращаемых значений.
Я пишу это для веб-сайта на основе Joomla, поэтому я использую встроенный массив functions LoadRowList ();который возвращает индексированный массив индексированных массивов из записей таблицы, возвращаемых запросом.
Первый массив содержит значения, заполненные на основе конкретного игрока
$search = array();
$query = "SELECT first_name,match_id,m_name,minutes,points
FROM #__bl_players as pl,#__bl_match_events as me,#__bl_matchday as md, #__bl_match as m
WHERE pl.id = me.player_id
AND pl.id = ".$player_id."
AND me.match_id = m.id
AND m.m_id = md.id
";
$db->setQuery($query);
$search = $db->loadRowList();
Массив $ search выводит массивв формате ниже.print_r ($ search);
Array (
[0] => Array ( [0] => Marco [1] => 33 [2] => Xornada 04 [3] => 7 [4] => 3 )
[1] => Array ( [0] => Marco [1] => 129 [2] => Xornada 08 [3] => 1 [4] => 2 )
[2] => Array ( [0] => Marco [1] => 129 [2] => Xornada 08 [3] => 6 [4] => 2 )
)
Второй массив содержит сотни записей с такой же компоновкой, что и первая.
$data = array();
$query = "SELECT first_name,match_id, m_name,minutes,ecount
FROM #__bl_players as pl,#__bl_match_events as me,#__bl_matchday as md, #__bl_match as m
WHERE pl.id = me.player_id
AND me.match_id = m.id
AND m.m_id = md.id
AND md.s_id = ".$s_id."
";
$db->setQuery($query);
$data = $db->loadRowList();
Массив $ data выводит в том же формате, что и выше,print_r ($ data);
Array (
[0] => Array ( [0] => Pablo [1] => 8 [2] => Xornada 01 [3] => 2 [4] => 3 )
[1] => Array ( [0] => Juan Ramón [1] => 9 [2] => Xornada 01 [3] => 1 [4] => 0 )
[2] => Array ( [0] => Pedro [1] => 9 [2] => Xornada 01 [3] => 1 [4] => 3 )
)etc etc etc
И, наконец, мне нужно заполнить третий массив записями, которые совпадают между массивами $ search и $ data, основываясь только на match_id и минутах.
Array(
[0]=>Array ([1]=> PlayerName(from the first array)[2]=> MatchID[3]=> MatchName[4]=> TimePlayed[5]=> Score(from the first array)[6]=> Score(from the second array)[7]=> PlayerName(from the second array))
)etc etc etc
Я изменил свой первоначальный вопрос, чтобы включить в него дополнительную информацию. Я не эксперт, поэтому я ищу все и любые идеи и отзывы.Спасибо
Примечание: Области имен столбцов следуют за Name = first_name, Match ID = match_id, Match name = m_name, Время события = минуты и набранные очки = очки
Проблемы IУ меня В ответ на комментарии это моя проблема, возьмите следующий код для примера (это только пример):
$matches = array();
foreach ($data as $entry){
if ($entry[2] == $search[2]) {
match =$search;
$matches[] = $match
}
}
print_r($mtaches)
Если я использую сравнение как $ entry [2] == $search [2] будет сравнивать 2-ые массивы из каждого, т.е.
`[2] => Array ( [0] => Marco [1] => 129 [2] => Xornada 08 [3] => 6 [4] => 2 )
==
[2] => Array ( [0] => Pedro [1] => 9 [2] => Xornada 01 [3] => 1 [4] => 3 )`
, поэтому мой вопрос заключается в том, как использовать тип подстановочного знака, чтобы я мог сравнитьключевые значения, например
$entry[*][2] == $search[*][2]
Спасибо всем за помощь и терпение, и особенно @erisco за то, что он поделился своими знаниями