我有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[]
值,但只是一次,不再重复!
答案 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);
}
}
}