PHP使用in_array检查变量是否与数组中的项相似

时间:2014-08-02 13:57:05

标签: php

我使用以下代码创建此数组:

$ignored = array();
foreach(explode("\n", $_POST["ignored"]) as $ignored2) {
    $ignored[] = $ignored2;
}

我想检查数组中的任何项是否是LIKE变量。到目前为止我有这个:

if(in_array($data[6], $ignored)) {

但我不知道如何处理LIKE

3 个答案:

答案 0 :(得分:2)

in_array()没有提供此类比较。您可以按照以下方式创建自己的功能:

<?php
function similar_in_array( $sNeedle , $aHaystack )
{

    foreach ($aHaystack as $sKey)
    {
        if( stripos( strtolower($sKey) , strtolower($sNeedle) ) !== false )
        {
            return true;
        }
    }    
    return false;
}
?>

您可以将此功能用作:

if(similar_in_array($data[6], $ignored)) {
    echo "Found";   // ^-search    ^--array of items
}else{              
    echo "Not found";
}

功能参考:

  1. stripos()
  2. strtolower()
  3. in_array()

答案 1 :(得分:0)

嗯,好像是来自SQL世界。 你可以使用这样的东西:

  $ignored = array();
  foreach(explode("\n", $_POST["ignored"]) as $ignored2) {
      $ignored[] = $ignored2;
      if ( preg_match('/^[a-z]+$/i', $ignored2) ) {
         //do what you want...
      }
  }

更新:嗯,我找到了这个答案,可能就是你需要的:

Php Search_Array using Wildcard

答案 2 :(得分:0)

以下是一种使用customized fairly easily lambda function http://codepad.org/yAyvPTIq的方法{/ 3>}

$words = array('one','two','three','four');
$otherwords = array('three','four','five','six');

while ($word = array_shift($otherwords)) {
    print_r(array_filter($words, like_word($word)));
}

function like_word($word) {
    return create_function(
        '$a', 
        'return strtolower($a) == strtolower(' . $word . ');'
    );
}

{{3}}

要添加不同的支票,只需向return添加更多条件即可。要在单个函数调用中执行此操作:

while ($word = array_shift($otherwords)) {
    print_r(find_like_word($word, $words));
}

function find_like_word($word, $words) {
    return array_filter($words, like_word($word));
}

function like_word($word) {
    return create_function(
        '$a', 
        'return strtolower($a) == strtolower(' . $word . ');'
    );
}