【问题标题】:How to check if a string inside of an array,contains a part of a string in php?如何检查数组内的字符串是否包含php中字符串的一部分?
【发布时间】:2014-09-10 08:37:39
【问题描述】:

我有这个代码:

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

但是不起作用,因为 in_array 指令检查数组是否存在完整的字符串“backup”,它不存在。我需要检查字符串的一部分,例如,返回 true,因为备份是“Hello_backup”和“Beautiful_backup”字符串

编辑:我接受了建议,我使用了这样的条带:

$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){”中给出

【问题讨论】:

  • 您的错误来自您尝试将数组用作字符串的事实。您需要在数组上使用 foreach 来获取该数组包含的每个字符串。更好地查看@Ghost 示例。
  • @Lght 不一定,如果要将所有数组值视为一个,可以使用 implode 将数组元素连接为字符串。看我的回答

标签: php arrays


【解决方案1】:

使用implode 基本上将数组值连接为字符串,然后使用strpos 检查字符串中的字符串。

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

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

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

【讨论】:

  • 正是我想要的,它工作得很好,谢谢:)
【解决方案2】:

在这种情况下,您需要使用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';
}

【讨论】:

  • 没有这个功能的例子好吗?我是初学者,我还不想使用函数
  • 我有一个错误 stripos() 期望参数 1 是字符串,数组
  • @Memphistoles 如果您不想要函数,请查看我的修订版
  • @Memphistoles 不,你不能直接使用stripos,你必须先循环它(每个字符串)不要使用整个数组,检查我的修订
【解决方案3】:

试试strpos()

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

输出:-DaNuDaNu

【讨论】:

    【解决方案4】:

    这是适合您的一站式解决方案。

    $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 )

    【讨论】:

      【解决方案5】:

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

      $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";}
      

      【讨论】:

        【解决方案6】:
        <?php
            $arr = array("Hello_backup","World!","Beautiful_backup","Day!");
            foreach($arr as $arr1) {
                if (strpos ($arr1,"backup")) {
                    echo "Da";
                } else {
                    echo "Nu";
                }
            }
        ?>
        

        【讨论】:

          猜你喜欢
          • 2015-08-29
          • 2012-06-23
          • 2022-06-14
          • 2015-09-08
          • 2017-01-18
          • 2021-12-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多