PHP: nasıl dize için bir dizinin içeriğini kontrol edebilirim?

4 Cevap php

I a string that is coming from my database table say $needle. If te needle is not in my array, then I want to add it to my array.

If it IS in my array then so long as it is in only twice, then I still want to add it to my array (so three times will be the maximum)

In order to check to see is if $needle is in my $haystack array, do I need to loop through the array with strpos() or is there a quicker method ?

There are many needles in the table so I start by looping through the select result.

Ben bunu yapmaya çalışıyorum ne şematik bir ...

$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. 

Herkes bu biraz yapacağım biliyor mu:

$num = no. of times $needle is in $haystack

teşekkürler

4 Cevap

Sen array_count_values() önce her değeri için frekans içeren bir harita oluşturmak için kullanın ve haritada değeri sayısı ise o zaman sadece değerini artırmak olabilir < 3, örneğin:

$original_values_count = array_count_values($values);

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

Döngü tamamen önlenemez gibi, ben elle tüm değerleri döngü ile karşılaştırıldığında, hız açısından bir doğal PHP işlevini kullanarak tercih için iyi bir fikir olduğunu söyleyebilirim.

Eğer array_count_values() tüm benzersiz değerler oluşumları dönmek demek istediniz?

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

Yukarıdaki kodun çıktısı olacak:

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

Dizinin her elemanı için verilen fonksiyonu uygular array_map() fonksiyonu da vardır.

Belki aşağıdaki gibi bir şey? Sadece Miek en küçük kod değişiyor.

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