У меня есть функция, которая довольно интенсивна в моем алгоритме.Удалить значения, если они находятся внутри массива
Я хочу попытаться сделать это как можно более эффективным. Мне все равно, что читаемость или что-то в этом роде. Просто скорость.
В основе функции взять набор карт:
$card1, $card2, $card3, $card4, $card5, $card6, $card7
Где каждую карта является числовым значением.
Тогда у меня есть массив значений, которые необходимо удалить из приведенного выше набора.
$ remove_values = array (1,4,3,8,12);
Поэтому в основном то, что мне нужно сделать, это, если $ CARD1 до $ card7 появляется в удалении значений, установите эту карту 0.
Мою текущую функцию:
foreach($remove_values as $value) {
if($value === $card1) {
$card1 = 0;
}
if($value === $card2) {
$card2 = 0;
}
if($value === $card3) {
$card3 = 0;
}
if($value === $card4) {
$card4 = 0;
}
if($value === $card5) {
$card5 = 0;
}
if($value === $card6) {
$card6 = 0;
}
if($value === $card7) {
$card7 = 0;
}
}
Это работает. Но мне было интересно, есть ли более быстрый способ сделать это? Вызов функций php является интенсивным, поэтому я пытаюсь уменьшить количество этих вызовов.
Я буквально пытаюсь сбрить миллисекунды из-за того, что мой алгоритм должен пройти миллионы результатов.
Есть ли $ карты внутри массива? –
Посмотрите на [array_filter()] (http://php.net/array_filter) и другие функции массива, встроенные в php. – vascowhite
@PedroLobito это не так, но это может быть. Добавление к большему количеству массивов вызывает дополнительные накладные расходы. – Patchesoft