php比较字符串到字符串的数组

时间:2015-06-19 03:27:02

标签: php arrays compare

让我说我有字符串

$string = "12315";

我想比较这个数组,并希望得到这样的结果:

$arr = [
   "123", //should be true
   "115", //should be true 
   "111", //false
   "132", //true
   "1512" //true
   "5531" //false
] 

数组值的每个计数值不应大于给定的字符串 我该怎么做?提前谢谢!

5 个答案:

答案 0 :(得分:3)

首先创建一个可能的组合,然后进行比较!

试试这个!

function create_possible_arrays(&$set, &$results)
    {
        for ($i = 0; $i < count($set); $i++)
        {
            $results[] = $set[$i];
            $tempset = $set;
            array_splice($tempset, $i, 1);
            $tempresults = array();
            create_possible_arrays($tempset, $tempresults);
            foreach ($tempresults as $res)
            {
                $results[] = $set[$i] . $res;
            }
        }
    }
    $results = array();
    $str = '12315'; //your input string
    $str = str_split($str); //create array
    create_possible_arrays($str, $results);
    $inputs = array(
        "123", //should be true
        "115", //should be true
        "111", //false
        "132", //true
        "1512", //true
       "5531"
    );
    foreach($inputs as $input){
        if(in_array($input,$results)){
            echo $input.' true <br/>';
        }else{
            echo $input.' false <br/>';
        }
    }

your result:

    123 true
    115 true
    111 false
    132 true
    1512 true
    5531 false

答案 1 :(得分:2)

<?php
$string = "12315";
$arr = ["123", "115", "111", "132", "1512", "5531"];

function specialCmp($str, $val) {
    for($i=0; $i<strlen($val); $i++) {
        $pos = strpos($str, $val[$i]);
        if($pos !== false)
            $str = substr_replace($str, '', $pos, 1);
        else return false;
    }
    return true;
}

$out = array();
foreach($arr as $val)
    $out[] = specialCmp($string, $val);

echo '<pre>';
var_dump($out);
echo '</pre>';
?>

答案 2 :(得分:0)

foreach($array as $string)
{
  if(strpos($searchstring, $string) !== false) 
  {
    echo 'yes its in here';
    break;
  }
}

答案 3 :(得分:0)

使用array_map功能:

$string = '...';
$arr = ['..', '.', '..,', '....']; // true, true, false, false
function check($str) { 
    /* Implement your check here */
    /* Smthng like: */
    $a = $string;
    foreach ($i = 0; $i<strlen($str); $i++) {
        $index = strpos($a, $str[$i]);
        if ($index === false) return false;
        else substr_replace($a,'', $index, 1);
    }
    return true;
}
$result = array_map(check, $arr);

答案 4 :(得分:0)

试试这个:

1.0f