Как уравнять array по уникальному значению?

На данный момент код не рабочий (выводит исходные значения):
<?php
$array = Array(
	'0' => Array(
		'0' => 'http://www.example.com/index.php',
		'1' => 'www.example.com/index.php',
		'2' => 'www.example.com/forum/index.php'),
	'1' => Array(
		'0' => 'http://',
		'1' => ''),
	'2' => Array(
		'0' => 'www.example.com'),
	'3' => Array(
		'0' => 'example.'),
	'4' => Array(
		'0' => 'com'),
	'5' => Array(
		'0' => '/index.php',
		'1' => '/forum/index.php')
	);

function arrayUnique($myArray) {
    $newArray = Array();
    if (is_array($myArray)) {
        foreach($myArray as $key=>$val[2]) {
            if (is_array($val[2])) {
                $val2 = arrayUnique($val[2]);
                } else {
                $val2 = $val[2];
                $newArray=array_unique($myArray);
                break;
                }
            if (!empty($val2)) {
                $newArray[$key] = $val2;
                }
            }
        }
    return ($newArray);
    }
$output=arrayUnique($array);

print_r($output);
?>

Основная задача проверять на уникальность значения 2 массива (www.example.com) и удалить лишние ключи в остальных массивах.
Функцию arrayUnique нашел в документации php, но она почему-то не работает, подскажите что не так, может кто сталкивался с подобной задачей?
После обработки массив должен выглядеть так:
Array
(
    [0] => Array
        (
            [0] => http://www.example.com/index.php
        )

    [1] => Array
        (
            [0] => http://
        )

    [2] => Array
        (
            [0] => www.example.com
        )

    [3] => Array
        (
            [0] => example.
        )

    [4] => Array
        (
            [0] => com
        )

    [5] => Array
        (
            [0] => /index.php
        )

)
  • Вопрос задан
  • 308 просмотров
Решения вопроса 1
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
$array = array(
  array(
    'http://www.example.com/index.php',
    'www.example.com/index.php',
    'www.example.com/forum/index.php'
  ),
  array('http://', ""),
  array('www.example.com'),
  array('example.'),
  array('com'),
  array('/index.php', '/forum/index.php')
  );
  
$NewArr = array(2 => $array[2]);
foreach($array as $k => $arr){
    if($k != 2){
        $NewArr[$k] = array();
        foreach($arr as $key => $tag){
            foreach($array[2] as $if){
                if(preg_match("/".preg_quote($if)."/i", $tag)){
                    $NewArr[$k][count($NewArr[$k]) + 1] = $tag;
                    continue 2;
                }
            }
        }
    }
}

print_r($NewArr);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Может быть, вам просто нужно использовать parse_url?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы