2014-09-01 57 views
0

此数组...
检查是否存在的价值或排除重复值数组

$rt = array(
    '0' => array(
    'nombre'=>'Jojo', 
    'fecah'=> '195', 
    'fch'=>'12' 
    ), 
    '1' => array(
     'nombre'=>'Tito', 
     'fecah'=> '197', 
     'fch'=>'13' 
    ), 
    '2' => array(
     'nombre'=>'Jojo', 
     'fecah'=> '195', 
     'fch'=>'12' 
    ), 
    '3' => array(
     'nombre'=>'Joji', 
     'fecah'=> '195', 
     'fch'=>'12' 
    ), 
); 

,这是我的代码:

$a = array(); 
foreach ($rt as $k=>$v) { 
    if (in_array($v['nombre'], $a) && in_array($v['fecah'], $a) && in_array($v['fch'], $a)) { 
     $a[]=$k; 
     echo 'The name ' . $v['nombre'] .' is in the array<br>'; 
    } else { 
     echo 'The name is not in the array <br>'; 
    } 
} 

所以你可以在数组索引参见[2 ]信息也存在于索引[0]中,所以我不再需要它了,所以我需要一段时间来查看数据是否重复或不重复......如果数据是“唯一”的,那么构建新的数组如果数据已经存在,则使用“唯一”数据,然后跳转到下一个,但是我需要比较3个键,而不仅仅是名称......所以我该怎么做?

+0

是,也不是,与我只得到一个独特的“数组”,这很好,但我需要知道什么数组或值重复? ... – Tanker 2014-09-01 22:26:53

+0

如果您获得唯一的数组,则可以通过差异来查找重复值。 – 2014-09-01 22:27:56

+0

dimmit!...你完全正确,我不知道我在想什么......所以..我得到独特的数组'$ unique_arrs',然后我只是做一个'$ repeated_arrs = array_diff($ unique_arrs ,$ rt);'......正确? – Tanker 2014-09-01 22:31:53

回答

-1

这是你需要这个

$newarray = array(); 
foreach($rt as $key => $value) 
{ 
    $nombre = $value['nombre']; 
    if(!isset($newarray[$nombre])) 
    { 
     $newarray[$nombre] = $value; 
    } 
} 
+0

请参考问题 - “我需要比较3个键不只是名称” – 2014-09-01 22:27:28

+0

这就是我已经有,我需要检查数组的多个键... – Tanker 2014-09-01 22:27:46

0

您插入阵列时,它是in_array并使用AND

你应该扭转你的代码是这样

$a = array(); 
foreach ($rt as $k=>$v) { 
    if (!in_array($v['nombre'], $a) || !in_array($v['fecah'], $a) || !in_array($v['fch'], $a)) { 
     $a[]=$k; 
     echo 'The name ' . $v['nombre'] .' is in the array<br>'; 
    } else { 
     echo 'The name is not in the array <br>'; 
    } 
} 
+0

这将无法正常工作,这是一个多所以你不能使用'in_array()'来检查键是否存在于其中,因为它们会比'in_array()'检查的更深。 – 2014-09-02 01:51:12

+0

我看到的是他试图将每个更深层次的数组插入到一维数组中 – 2014-09-02 01:53:28

+0

您说'if(!in_array($ v ['nombre'],$ a))' - 但'$ a'是一个类似数组:'array(0 => array('nombre'=>'whatever,'etc'=>'foobar'))' - 不起作用。 – 2014-09-02 01:56:06