Php 最后计算相同的值
我有一个数组:Php 最后计算相同的值,php,arrays,Php,Arrays,我有一个数组: $array = array(1,1,5,2,3,3,3,3); 我需要找到一种方法来计算一个数字在数组末尾重复的次数。在这种情况下,数字3重复4次 如果…: $array = array(1,1,5,2,3,3,3,3,4); 在这种情况下,结果将是1,因为数字4只出现一次 谢谢你的帮助。试试这个:() 你不能从数组的末尾开始,数到第一个不匹配的数字吗?你的问题不清楚。先让我们看看你的尝试。让我们看看你尝试了什么。谢谢,它成功了。如果数组中的值超过5000个,这不会太慢?它
$array = array(1,1,5,2,3,3,3,3);
我需要找到一种方法来计算一个数字在数组末尾重复的次数。在这种情况下,数字3重复4次
如果…:
$array = array(1,1,5,2,3,3,3,3,4);
在这种情况下,结果将是1,因为数字4只出现一次
谢谢你的帮助。试试这个:()
你不能从数组的末尾开始,数到第一个不匹配的数字吗?你的问题不清楚。先让我们看看你的尝试。让我们看看你尝试了什么。谢谢,它成功了。如果数组中的值超过5000个,这不会太慢?它只会与最后匹配值的长度一样长。。(i
break
在找到不匹配的值时将其删除)如果有5000个值,但只有最后5个匹配,则速度会非常快。。另外,5000也不是很多。如果对值进行了排序,则可以使用二进制搜索。这将使您的搜索时间为O(logN),而不是上述的O(N)方法。基本上从结束值开始,作为二进制搜索分区的右端,从数组的中间值开始,作为二进制搜索分区的左端。这样,您就可以在O(logN)时间内从一开始就找到3的第一次出现。
$array = array(1,1,5,2,3,3,3,3);
$num = end($array); // this will be 3 - the value to compare to
$count = 0; // init count
for($i = sizeof($array)-1; $i>=0;$i--) // loop from the end backwards
if($array[$i]==$num) // if this is the correct num
$count++; // increase count
else
break; // end loop - not side by side anymore - no reason to keep looping
echo $count; // print the result