2016-01-19 2 views
1

У меня есть этот массивМожно ли объединить подобное содержимое в один массив?

Array 
    (
    [0] => Array 
    (
     [0] => A 
     [1] => B 
     [2] => C 
    ) 

[1] => Array 
    (
     [0] => A 
     [1] => C 
     [2] => B 
    ) 

[2] => Array 
    (
     [0] => B 
     [1] => A 
     [2] => C 
    ) 

[3] => Array 
    (
     [0] => B 
     [1] => C 
     [2] => A 
    ) 
) 

Содержимое в каждом массиве похожи, возможно ли слияние их и иметь один единственный массив, как показано ниже?

Array 
    (
    [0] => Array 
    (
     [0] => A 
     [1] => B 
     [2] => C 
    ) 
) 

Есть ли функция php, чтобы справиться с этим?

ответ

1

Используйте array_unique()

<?php 
$a = array(
    array('A', 'B', 'C'), 
    array('A', 'C', 'B'), 
    array('B', 'A', 'C'), 
    array('B', 'C', 'A') 
); 
$c = array(); 
foreach ($a as $b) { 
    if (! empty($b)) { 
    foreach ($b as $d) { 
     $c[] = $d; 
    } 
    } 
} 
$c = array_unique($c); 
echo '<pre>';print_r($c);echo '</pre>'; 
?> 

Выходы:

Array 
(
    [0] => A 
    [1] => B 
    [2] => C 
) 
0

Вы можете сделать, как показано ниже:

$final = $newArr = array(); 
foreach ($a as $val) { 
    foreach ($val as $value) 
    $newArr[] = $value;  
} 
$final = array_unique($newArr); 
print_r($final); 
1

Да, это возможно:

array_unique (call_user_func_array ('array_merge', $yourArray)); 

Вам не нужно создавать пользовательские функции, здесь рабочий пример:

$a = array(
array('a','b','c'), array('b','c','a'), array('a','c','b') 
); 

$x = array_unique (call_user_func_array ('array_merge', $a)); 
var_dump($x); 
Смежные вопросы