2014-09-10 129 views
1

我有这样的代码:如何检查数组中的字符串是否包含php中的一部分字符串?

$arr = array("Hello_backup","World!","Beautiful_backup","Day!"); 
if(in_array("backup", $arr)){ 
    echo "Da"; 
} else { echo "Nu"; 
} 

但不工作,因为in_array指令检查整个字符串“备份”,这犯规exist.I需要检查字符串的一部分的阵列,例如,因备份是“Hello_backup”和“Beautiful_backup”串

的一部分返回true

编辑:我拿意见,我已经使用stripos函数是这样的:

$arr = array("Hello_backup-2014","World!","Beautiful_backup-2014","Day!"); 
$word='backup'; 
if(stripos($arr,$word) !== false){ 
echo "Da"; 
} else { echo "Nu";} 

但现在我得到一个错误:“stripos()期望参数1是字符串,数组给出在if(stripos($ arr,$ word)!== false){”

+1

你的错误来自于一个事实,即你正在尝试使用数组,如果它是一个字符串。你需要在你的数组中使用'foreach'来获取这个数组包含的每个字符串。仔细看一下@Ghost的例子。 – GeoffreyB 2014-09-10 08:50:06

+3

@Light并不一定,如果你想将所有数组值视为一个,你可以使用implode作为一个字符串连接数组元素。看到我的回答 – iswinky 2014-09-10 08:56:40

回答

1

使用implode基本上串联数组值作为一个字符串,然后使用strpos检查字符串中的字符串。

传递给implode的第一个参数用于分隔数组中的每个值。

$array = array("Hello_backup","World!","Beautiful_backup","Day!"); 
$r = implode(" ", $array); 

if (strpos($r, "backup") !== false) { 
    echo "found"; 
} 
+0

正是我一直在寻找,它完美的作品谢谢:) – Memphistoles 2014-09-10 09:00:33

1

在这种情况下,您需要使用stripos() 。例如:

$arr = array("Hello_backup","World!","Beautiful_backup","Day!"); 
$needle = 'backup'; 

function check($haystack, $needle) { 
    foreach($haystack as $word) { 
     if(stripos($word, $needle) !== false) { 
      return 'Da!'; // if found 
     } 
    } 
    return 'Nu'; // if not found 
} 

var_dump(check($arr, $needle)); 

如果没有一个函数:

$arr = array("Hello_backup","World!","Beautiful_backup","Day!"); 

$found = false; 
foreach($arr as $word) { 
    if(stripos($word, 'backup') !== false) { 
     $found = true; 
     break; 
    } 
} 

if($found) { 
    echo 'Da!'; 
} else { 
    echo 'Nu'; 
} 
+0

一个没有功能的例子吗?我是初学者,我不想使用的功能尚未 – Memphistoles 2014-09-10 08:42:26

+0

我有一个错误stripos函数()预计参数1是字符串数组 – Memphistoles 2014-09-10 08:45:51

+0

@Memphistoles如果你不想要的功能,请查看我的修订 – Ghost 2014-09-10 08:47:00

1

使用此方法。使用起来有点简单。

$matches = preg_grep('/backup/', $arr); 
$keys = array_keys($matches);  
print_r($matches); 

看看这个working example

根据你的问题

$matches = preg_grep('/backup/', $arr); 
$keys = array_keys($matches);   
$matches = trim($matches);  
if($matches != '') 
{echo "Da"; 
}else { echo "Nu";} 
1
<?php 
    $arr = array("Hello_backup","World!","Beautiful_backup","Day!"); 
    foreach($arr as $arr1) { 
     if (strpos ($arr1,"backup")) { 
      echo "Da"; 
     } else { 
      echo "Nu"; 
     } 
    } 
?> 
1

尝试用strpos()

$arr = array("Hello_backup","World!","Beautiful_backup","Day!"); 
foreach($arr as $v){ 
    echo (strpos($v,"backup")!== false ? "Da" : "Nu"); 
} 

输出: - DaNuDaNu

1

这是给你的一个在线解决方案。

$arr = array("Hello_backup-2014","World!","Beautiful_backup-2014","Day!"); 

$returned_a = array_map(function($u){ if(stripos($u,'backup') !== false) return "Da"; else return "Nu";}, $arr); 

您可以使用数组作为你的答案$ returned_a .. Array ([0] => Da [1] => Nu [2] => Da [3] => Nu)

相关问题