2017-04-12 87 views
1

我想創建一個簡單的PHP搜索我的網站。 我想通過一個對象來搜索字符串的一部分。如何搜索一個給定的字符串的對象php

$string_to_find = "hello"; 

這裏是對象

0 => 
    object(stdClass)[1] 
     public 'id' => int 1 
     public 'name' => string 'John is hello' 

    1 => 
    object(stdClass)[2] 
     public 'id' => int 2 
     public 'name' => string 'Hello people' 
    2 => 
    object(stdClass)[2] 
     public 'id' => int 3 
     public 'name' => string 'yes people' 

我怎樣才能通過這個對象進行迭代,並與值(名稱)的「你好」返回一個對象。它不應區分大小寫。

因此,如果它的工作,0和1 objs應該是預期的行爲?

我想是這樣的:

$arr = array(); 
foreach($filesPopular as $k=>$v) { 
    if(strpos($string_to_find, $v)) { 
     $arr[$k] = $v; 
     $fileslike = $arr[$k]; 
    } 
} 

錯誤:對象不能被轉換成int」

+0

你可以只使用一個'foreach'和'if',它會工作得很好,使用'stripos'如果它的意思不要區分大小寫 – Ghost

+0

@Ghost任何示例代碼如何實現? –

+0

你可以嘗試一下,不會花50行來做到這一點,foreach,如果有比較,也可能是一個未設置或新的任務到一個新的容器 – Ghost

回答

1

就像在評論,只是用一個foreachif

使用。 stripos,以便它不區分大小寫。確保您使用嚴格比較!== false,如果stripos返回,則會得到誤報(因爲零被認爲是找到):

理念:

$string_to_find = "hello"; 
$contains_the_string = array(); // container of the matches 
foreach ($filesPopular as $k => $v) { // so, for each object 
    if (stripos($v->name, $string_to_find) !== false) { 
    // check if string to find is contained within the name attribute 
     $contains_the_string[] = $v; // if yes, put it inside the container 
    } 
} 
print_r($contains_the_string); 
+0

如果我有一個像$ string_to_find =「hello well」的字符串呢?有些值的名字值爲「你好詹姆斯是個好人......」,我怎麼還能得到給定的對象。只有當價值明確相同時,你給我的答案才能奏效。 –

+0

@ObasiObenyOj你需要刪除單詞(或者我應該說是用空格分解),對每個單詞進行foreach並遍歷該對象,但效率非常低,這就是爲什麼我們有一個名爲databases – Ghost

+0

@ObasiObenyOj的東西,這段代碼,你仍然應該得到給定的對象。確保你使用'!== false',而不是你之前在if語句中所擁有的。 – Terminus

相關問題