Есть массив Код (Text): Array ( [] => Array ( [0] => Благовещенск [1] => Якутск ) [1] => Array ( [0] => Благовещенск [1] => Хабаровск ) [2] => Array ( [0] => Благовещенск [1] => Владивосток ) [3] => Array ( [0] => Благовещенск [1] => Чита ) [4] => Array ( [0] => Благовещенск [1] => Иркутск ) [5] => Array ( [0] => Благовещенск [1] => Екатеринбург ) [6] => Array ( [0] => Благовещенск [1] => Москва ) [7] => Array ( [0] => Благовещенск [1] => Новосибирск ) [8] => Array ( [0] => Хабаровск [1] => Токио ) [9] => Array ( [0] => Хабаровск [1] => Сеул ) [10] => Array ( [0] => Хабаровск [1] => Якутск ) [11] => Array ( [0] => Хабаровск [1] => Благовещенск ) [12] => Array ( [0] => Хабаровск [1] => Магадан ) [13] => Array ( [0] => Хабаровск [1] => Петропавловск ) [14] => Array ( [0] => Хабаровск [1] => Владивосток ) [15] => Array ( [0] => Хабаровск [1] => Чита ) [16] => Array ( [0] => Хабаровск [1] => Иркутск ) [17] => Array ( [0] => Хабаровск [1] => Краснодар ) [18] => Array ( [0] => Хабаровск [1] => Екатеринбург ) [19] => Array ( [0] => Хабаровск [1] => Москва ) [20] => Array ( [0] => Хабаровск [1] => Бангкок ) [21] => Array ( [0] => Хабаровск [1] => Новосибирск ) [22] => Array ( [0] => Хабаровск [1] => Красноярск ) [23] => Array ( [0] => Хабаровск [1] => Анадырь ) [24] => Array ( [0] => Владивосток [1] => Токио ) [25] => Array ( [0] => Владивосток [1] => Сеул ) Как получить все уникальные подмассивы п.с. (array_unique не проходит)
на входе Цитата: $arr = array( array('Благовещенск', 'Якутск'), array('Благовещенск', 'Хабаровск'), array('Якутск', 'Благовещенск'), ); на выходе Цитата: $arr = array( array('Благовещенск', 'Якутск'), array('Благовещенск', 'Хабаровск'), ); array('Благовещенск', 'Якутск'), array('Якутск', 'Благовещенск'), считаем равными массивами
Перебором и сравнением ячеек с известными уникальными массивами. Известные уникальные массивы, которые и будут результатом, формируем по ходу пьесы.
Вот те на скорую руку собранный, не проверенный ни разу, рабочий только на глаз пример: Код (PHP): <?php function getUniquePair($array) { $result = array($array[0]); foreach ($array as $pair) { foreach($result as $res_pair) { if ((($res_pair[0]!==$pair[0]) and ($res_pair[1]!==$pair[1])) and (($res_pair[0]!==$pair[1]) and ($res_pair[1]!==$pair[0]))) { $result[] = $pair; break; } } } return $result; } ?> Заодно попрактикуешься в отладке. Комментов специально нет. Без труда ни оттуда, ни туда. Разбирайся.
Да то, то, просто я ж сказал, Отлаживай. Даю подсказку, ошибка где-то в ифах. Добавлено спустя 2 минуты 6 секунд: Я даже без отладки увидел, где косяк. Ищи.
Код (PHP): function combineArrays(array $array) { $combineArray=array(); foreach($array as $value) { if(is_array($value)) { $combineArray=array_merge($combineArray,combineArrays($value)); } else { $combineArray[]=$value; } } return $combineArray; }
Код (PHP): $arr = array( array('Благовещенск', 'Якутск'), array('Благовещенск', 'Хабаровск'), array('Якутск', 'Благовещенск'), ); echo'<pre>'; print_r(combineArrays($arr)); Код (PHP): Array ( [0] => Благовещенск [1] => Якутск [2] => Благовещенск [3] => Хабаровск [4] => Якутск [5] => Благовещенск )
Код (PHP): $arr = array( array('Благовещенск', 'Якутск'), array('Благовещенск', 'Хабаровск'), array('Якутск', 'Благовещенск'), ); // 1. Flatten array $it = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr)); $result = array(); foreach ($it as $v) $result[] = $v; // 2. Get Unique var_export(array_unique($result)); Код (Text): array ( 0 => 'Благовещенск', 1 => 'Якутск', 3 => 'Хабаровск', )
Код (PHP): <?php $arr = array( array('Благовещенск', 'Якутск'), array('Благовещенск', 'Хабаровск'), array('Якутск', 'Благовещенск'), ); // было бы проще, если бы array_unique умел сравнивать подмассивы. // а так придется их превратить в строки, сравнить, затем обратно в масивы. $result = array_map(function($x) {sort($x); return serialize($x);}, $arr); $result = array_unique($result); $result = array_map('unserialize', $result); var_export($result); Код (Text): array ( 0 => array ( 0 => 'Благовещенск', 1 => 'Якутск', ), 1 => array ( 0 => 'Благовещенск', 1 => 'Хабаровск', ), )