我试图使用for
循环
<?php
$b=array('a','b','c','a','b');
$c=count($b);
$d=array();
for($i=0;$i<=($c-1);$i++)
{
for($j=1;$j<=($c-1);$j++)
{
if($b[$i]!=$b[$j])
{
$flag=1;
}
}
if($flag==1)
{
$d[$i]=$b[$i];
}
}
print_R($d);
?>
我的错误在哪里?我使用数组$ d来显示非重复值......
注意:我需要使用for
循环尝试仅 - 我知道如何使用数组函数执行此操作。
答案 0 :(得分:1)
您应该反转您的测试,因为几乎总是有值,这与您正在测试的值不同。你必须在内循环之前重置你的$flag
,否则它将永远是真的。
如果要查找唯一值,则只能对$d
进行测试。如果该值已在$d
中,请跳过它。
$c1 = count($b);
for ($i = 0; $i < $c1; $i++) {
$dup = 0;
$c2 = count($d);
for ($j = 0; $j < $c2; $j++) {
if ($b[$i] == $d[$j])
$dup = 1;
}
if (!$dup)
$d[] = $b[$i];
}
print_r($d);
如果要查找没有重复项的值
for ($i = 0; $i < $c; $i++) {
$dup = 0;
for ($j = 0; $j < $c; $j++) {
if ($i != $j && $b[$i] == $b[$j])
$dup = 1;
}
if (!$dup)
$d[] = $b[$i];
}
答案 1 :(得分:0)
为什么你要做一个简单的任务复杂......简单
$b = array('a','b','c','a','b');
var_dump(customCount($b));
输出
array (size=3)
'a' => int 2 //duplicate
'b' => int 2 //duplicate
'c' => int 1
使用的功能
function customCount($array) {
$temp = array();
foreach ( $array as $v ) {
isset($temp[$v]) or $temp[$v] = 0;
$temp[$v] ++;
}
return $temp ;
}
答案 2 :(得分:0)
function has_dupes($array){
$dupe = array();
foreach($array as $val){
if(++$dupe[$val] > 1)
return true;
}
return false;
}
可以做这样的事情..这会检查欺骗,然后你可以打印独特的