У меня есть массив с числами в php, например
$data=array(1500,1515,1300,1466,15,151)
Я хочу найти числа, которые содержат 15 в этом массиве, в этом примере это будет
$result=array(1500,1515,15,151).
Я знаю, что могу преобразовать их в строку и выполнить поиск с помощью strpos, но мне нужен более быстрый метод с использованием целочисленного деления / мульта.
Любой совет?
ОБНОВЛЕНИЕ ПОСЛЕ ПРИНЯТОГО ОТВЕТА.
Используя этот код, я протестировал метод, строку и целое число, 10000 поисков в числах с 1 до 6 цифрами.Более быстрый метод - строковый метод.
<?php
$data = array();
for($i=0;$i<10000;$i++)
$data[]=rand(0,100000);
$start1 = microtime(true);
for($i=0;$i<100;$i++)
foreach($data as $j=>$v)
{
$needle = false;
while($v && !$needle) {
if($v%100 == 15) // Check if last two digits are 15.
$needle = true;
$v = floor($v/10); // Remove last digit.
}
}
$end1 = microtime(true);
$start2 = microtime(true);
for($i=0;$i<100;$i++)
foreach($data as $j=>$v)
$needle=strpos($v, '15') !== false;
$end2 = microtime(true);
echo "int: ".($end1-$start1)."<br>string: ".($end2-$start2);
?>
Вывод был:
int: 1.2258439064026
string: 0.4002320766449