2012-12-01 141 views
0

我的數組是這樣的:在PHP中搜索字符串格式數組中的數字?

array('0|500|0.50', '501|1000|0.75'); 

我嘗試運行搜索,獲得其擁有的搜索價值的關鍵。當檢查

function cu_array_search($str,$array){ 
    foreach($array as $key => $value) { 
     if(strstr($str,$value)) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

,並使用它像這樣:

if (cu_array_search(500,$array) { 

但它永遠不會返回true,儘管存在於數組第一個關鍵是500

我做了這個功能進行搜索。

如何解決這個問題?

感謝

回答

2

strpos會使你的函數返回true,即使這是0.5001但不是500

你應該爆炸|的值,然後檢查數組中的數字。

function cu_array_search($num, $array){ 
    return count(array_filter($array, function ($var) use ($num) { 
    return in_array($num, explode('|', $var)); 
    })) > 0; 
} 
0

首先,strstr參數錯誤

其次,return false應該在循環的結束。

第三,如果你需要KEY然後,您需要使用return $key代替return true

function cu_array_search($str,$array){ 
    foreach($array as $key => $value) { 
     if(strstr($value, $str)) { 
      return $key; 
     } 
    } 
    return false; 
} 
+0

它不工作。 echo cu_array_search($ str,$ array); .. –

+0

對不起,我更正了我的代碼。你可以再試一次嗎? –

1

草垛是第一個參數,而不是第二:

if(strstr($value,$str)) { 

此外,strpos是更快這個,所以你應該使用:

function cu_array_search($str,$array){ 
    foreach($array as $key => $value) { 
     if(strpos($value,$str) !== false) { 
      return $key; 
     } else { 
      return false; 
     } 
    } 
} 
+0

Thaanks!這是工作 –

+0

@AhmedFouad您應該使用xdazz的解決方案,有些情況下字符串搜索可能會檢索到您的方案不正確的結果。 –

0

這工作得很好

<?php 

function cu_array_search($str, $array) { 
    foreach($array as $key => $value) { 
     $temp_array=explode('|', $value); 
     if (in_array($str, $temp_array)) 
      return true; 
    } 
    return false; 
} 

$array = array('0|500|0.50', '501|1000|0.75'); 


if (cu_array_search(500, $array)) 
    echo "success"; 
else 
    echo "failed" ; 

?>