PHP:如何检查数组的内容以查找我的字符串?

时间:2010-01-25 06:59:28

标签: php arrays find

我来自数据库表的字符串是$ needle。 如果te needle不在我的数组中,那么我想将它添加到我的数组中。

如果它在我的阵列中,那么只要它只有两次,那么我仍然 想要将它添加到我的数组中(所以最多三次)

为了检查是否$ needle在我的$ haystack数组中,是吗? 需要使用strpos()循环遍历数组还是有更快的方法?

表中有很多针,所以我开始循环 选择结果。

这是我想要做的示意图......

$haystack = array();

  while( $row = mysql_fetch_assoc($result)) {
   $needle = $row['data'];

    $num = no. of times $needle is in $haystack //   $haystack is an array

    if ($num < 3 ) {
        $$haystack[] = $needle; // hopfully this adds the needle
        }

     } // end while. Get next needle. 

有谁知道我该怎么做:

$ num =不。 $ needle在$ haystack中的次数

谢谢

4 个答案:

答案 0 :(得分:1)

您的意思是array_count_values()返回所有唯一值的出现次数吗?

<?php
$a=array("Cat","Dog","Horse","Dog");
print_r(array_count_values($a));
?> 

上面代码的输出将是:

Array ( 
[Cat] => 1,
[Dog] => 2,
[Horse] => 1
 )  

答案 1 :(得分:1)

您可以使用array_count_values()首先生成包含每个值的频率的地图,然后只有在地图中的值计数为&lt; 3,例如:

$original_values_count = array_count_values($values);

foreach ($values as $value)
    if ($original_values_count[$value] < 3)
        $values[] = $value;

由于无法完全避免循环,我认为在速度方面选择使用本机PHP函数是个好主意,而不是手动循环所有值。

答案 2 :(得分:0)

还有array_map()函数,它将给定函数应用于数组的每个元素。

答案 3 :(得分:0)

可能是以下情况?只是改变了Miek的代码。

$haystack_count = array_count_values($haystack);
if ($haystack_count[$needle] < 3)
    $haystack[] = $needle;