У меня есть массив со значениями, основанными на конкретном игроке, и я хочу использовать некоторые из этих значений (match_id и минуты) для сравнения со вторым массивом, а затем создать третий массив для хранения возвращаемых значений.
Я пишу это для веб-сайта на основе Joomla, поэтому я использую встроенные функции массива 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 ($ поиск);
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 ($ данные);
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
Я пересмотрел свой первоначальный вопрос, чтобы включить больше информации. Я не эксперт, поэтому я ищу все и любые идеи и отзывы. Спасибо
Примечание. Области имен столбцов следующие: Имя = имя_имя, идентификатор матча = идентификатор_матча, имя матча = m_имя, время события = минуты, а набранные очки = очки.
Проблемы, с которыми я столкнулся В ответ на комментарии это моя проблема, например, возьмите следующий код (это только пример):
$matches = array();
foreach ($data as $entry){
if ($entry[2] == $search[2]) {
match =$search;
$matches[] = $match
}
}
print_r($mtaches)
Если я использую сравнение, такое как $entry[2] == $search[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 за то, что поделился своими знаниями
array_walk()
или что-то подобное для написания собственной функции - php.net/manual/ ru/function.array-walk.php - person Jake N   schedule 01.02.2011