2017-04-12 92 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

相关问题