2016-05-31 97 views
0

我有一个PHP数组,看起来像这样从多维索引阵列阵列,删除基于重复的值

[["a","b"],["e","j"],["a","s"]] 

我需要它看起来像这样,

[["a","b"],["e","j"]] 

或本,

[["e","j"],["a","s"]] 

我不能有两个包含相同“0”索引的内部数组。只要保留一个内部数组就没关系。我怎样才能通过这个数组并删除包含相同的“0”索引的内部数组?

谢谢!

回答

0

您可以简单地通过两个循环遍历数组。比方说,这是你的数据:

$data = array(
    array('a', 'b'), 
    array('e', 'j'), 
    array('a', 's'), 
    array('a', 't'), 
    array('c', 't'), 
    array('a', 'h'), 
    array('c', 'e'), 
    array('f', 'g') 
); 

然后你继续前进,通过一切回路,并取消它,如果它是相同的值。

$count = count($data); 
foreach($data as $index => $array){ 
    for($i=$index + 1; $i<$count; $i++) 
     if(isset($array[0]) && isset($data[$i][0]) && $array[0] == $data[$i][0]) 
      unset($data[$i]); 
} 

$data环后var_dump是:

array(4) { 
    [0]=> 
    array(2) { 
    [0]=> 
    string(1) "a" 
    [1]=> 
    string(1) "b" 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    string(1) "e" 
    [1]=> 
    string(1) "j" 
    } 
    [4]=> 
    array(2) { 
    [0]=> 
    string(1) "c" 
    [1]=> 
    string(1) "t" 
    } 
    [7]=> 
    array(2) { 
    [0]=> 
    string(1) "f" 
    [1]=> 
    string(1) "g" 
    } 
} 
+0

谢谢你的帮助。你的答案有效,但是如何在使用json_encode输出答案时删除数字索引键? {“0”:[“a”,“b”],“2”:[“c”,“e”]}我想摆脱“0”和“2” – linuxisthebest33

+0

@ linuxisthebest33你想要什么它是?你希望它是“0”还是“1”? –

+0

我想数组返回一个标准的索引数组,如[[“a”,“b”],[“e”,“g”]] – linuxisthebest33

0
<?php 
$array = [["a","b"],["e","j"],["a","s"]]; 
$values = array(); 


foreach ($array as $key => $arrayChild) { 
    foreach ($arrayChild as $val) { 
     if (in_array($val, $values)) { 
      unset($array[$key]); 
     } 
     $values[] = $val; 
    } 
} 
print_r($array); 
?> 

结果:

Array ( 
    [0] => Array ([0] => a [1] => b) 
    [1] => Array ([0] => e [1] => j) 
)