簡體   English   中英

PHP:如何檢查字符串數組的內容?

[英]PHP: How do I check the contents of an array for my string?

我從數據庫表傳來的字符串是$ 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中的次數

謝謝

您是不是要用array_count_values()返回所有唯一值的出現?

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

上面代碼的輸出將是:

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

您可以使用array_count_values()首先生成一個包含每個值的頻率的映射,然后僅在映射中的值計數小於3的情況下才遞增該值,例如:

$original_values_count = array_count_values($values);

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

由於無法完全避免循環,因此與手動循環所有值相比,在速度方面選擇使用本機PHP函數是一個好主意。

還有array_map()函數,該函數將給定函數應用於數組的每個元素。

也許像下面這樣? 只需稍微更改Miek的代碼即可。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM