如何检查从该字符串开始的数组的值?

时间:2015-01-26 08:24:19

标签: php arrays

我有3个阵列,就这样:

$add[] = carblue,carred,bus;
$allad[] = car,carblue,carred,bus;
$fis[] = bus,car;

现在我写这段代码:

foreach($add as $ad) {
   foreach($fis as $fisvalue) {
      if (in_array(substr($fisvalue, 0, strlen($ad)), $allad)) {
         echo $fisvalue;
      }
   }
}

但是这段代码的结果是:

bus
car
bus
car
bus
car
car

我只想要echo "bus car"而另一方面似乎需要使用两个foreach! 你有没有想法解决我的问题,只是回应?:

car
bus

换句话说,如果$allad[]的值以$fis[]开头,则值为echo $fis[]值,但只是一次,不再重复!

3 个答案:

答案 0 :(得分:1)

使用它,它会给你你想要的东西。

<?php
$add=array('carblue','carred','bus');
$allad=array('car','carblue','carred','bus');
$fis=array('bus','car');

$outputValue = array();
foreach($add as $ad) {
    foreach($fis as $fisvalue) {
        if (in_array(substr("$fisvalue",0,strlen("$ad")),$allad)){
            $value = $fisvalue;
            if ( !in_array($value,$outputValue) )  $outputValue[] = $value;
        }
    }
}

echo implode($outputValue, ', ');
?>

答案 1 :(得分:0)

首先,如果您希望$add如果$fis值以$allad值开头,则需要$fis数组?此代码有效:

$add = array('carblue','carred','bus');
$allad = array('car','carblue','carred','bus');
$fis = array('bus','car');

foreach($fis as $fisvalue) {

        foreach($allad as $ad) {

            if (strpos($ad,$fisvalue) === 0){             
               $matched = true;
            }
        }
        if ($matched) {
           $matched = false;
           echo $fisvalue;
        }
    }

首先我们迭代我们想要回显一次的值,然后我们将这些值与数组$allad进行比较,如果在$fisvalue找到$ad的地方0(开始)然后标记为匹配,如果$fisvalue匹配,则回显

答案 2 :(得分:0)

你可以做这样的事情

$foundResults = array(); # you will save here every result you have found
foreach($add as $ad) {
   foreach($fis as $fisvalue) {
      if (in_array(substr($fisvalue, 0, strlen($ad)), $allad)) {
        if(!in_array($foundResults)) # if result doesn't exist in $foundResults, then echo result and add it to the $foundResults array
          echo $fisvalue;
          array_push($foundResults, $fisvalue);
      }
   }
}