n-массив

  • Автор темы Курсий
  • Дата начала

Курсий

Guest
n-массив

Здравствуйте!
У меня вот ступор .Не могу решить следующею задачу.
Имею два массива вида:
Array
(
[0] => Array
(
[time] =>время
[name] => имя
[path]=>путь
)
[1] => Array
(
[time] =>время
[name] => имя
[path]=>путь
)

Нужно эти два масива сравнить.И различия записать либо в новый ,либо удалить равные массивы ....
подскажите пожалуйста как это лучше сделать.
 

Курсий

Guest
Видимо не правильно объяснил ...
есть массив
array1
[0] => Array
(
[time] =>время
[name] => имя
[path]=>путь
)
.......
[n]
=> Array
(
[time] =>время
[name] => имя
[path]=>путь
)
и массив
array2=
[0] => Array
(
[time] =>время2
[name] => имя2
[path]=>путь2
)
.......
[n]=> Array
(
[time] =>время
[name] => имя
[path]=>путь
)
так вот мне нужно например сравнить
array1[0]['path']==array2[0]['path']
...
array1[n]['path']==array2[n]['path']
а функция array_diff не вариант т.к.
Замечание: Два элемента считаются одинаковыми если и только если (string) $elem1 === (string) $elem2. Другими словами, когда их строковое представление идентично.
 

Кром

Новичок
PHP:
for($i = 0;$i< count(array1);$i++)
{
	if ($array1[$i] === $array2[$i])
	{
		// delete arrays
	}
	else
	{
		// compare time, name, path
	}
}
Обходишь массив, и сравниваешь элементы, потом уаляешь или производишь другие действия.
 

Курсий

Guest
Спасибо ,за оперативные ответы !

а я мудрил с array_walk
c foreach
Только у меня вот еще вопрос:
не факт что массив с name,path и т.д. идут в одной последовательности ...
т.е.
array1[1]===array2[5]
можно ли их как-нибудь привести к одному виду .....
Да и еще sizeof(array1)может быть как > так и < или вообще =sizeof(array2)
 

Кром

Новичок
Если у тебя многомерные массивы разные, то приводить их к одному виду придется руками. Т.е. бежишь по одному массиву, и сравниваешь его с другим.
 

Курсий

Guest
Правильно ли я понял про руки?
PHP:
for($i=0;$i<$k;$i++)
     {
       foreach ($array1 as $key=>$value)
              {         
              if($value===$array2[$i])
                             {
                            unset($array2[$i]);
                            break;
                                }
}
                            
     }
 
Сверху