Есть список матчей, выводится из массива. При клике на матч в $_GET запрос уходит ID матча. Мне надо вывести только этот матч, то есть отфильтровать массив, и оставить только один матч. Сейчас я делаю так, но думаю такой метод не очень хороший
if(isset($_GET['match'])) {
$matches = getMatches();
foreach ($matches as $match) {
if ($match['id'] == $_GET['match']) {
$currentMatch = $match;
}
}
}
Сам метод поиска нужного элемента в массиве у вас в принципе обычен. Другой вопрос в том, что если данное действие потенциально будет повторяться, то каждый раз писать подобное - не лучшая затея.
Наиболее простой способ для такого поиска, да и в целом, сделать так, чтобы ключами возвращаемого в getMatches массива были id, тогда искать ничего и не понадобится.
Модифицируйте вашу функцию getMatches
function getMatches(){
.....
return $result;
}
например, как-то так
function getMatches(){
......
return array_combine(array_column($result,'id'), $result);
}
и сможете использовать, условно, так:
if(isset($_GET['match'])){
$matches = getMatches();
$current = $matches[ $_GET['match'] ] ;
}
Второй вариант - определите функцию getMatchById($id) или нечто подобное, в которой отфильтруете нужный матч и вернете его.
function getMatchById($id){
$matches = getMatchs();
foreach($matches as $m){
if( $m['id'] == $id) return $m;
}
return null;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей