Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по массивам php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Aquilla
Отправлено: 30 Июня, 2008 - 21:28:15
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2008  


Помог: 0 раз(а)




Вопрос следующий:
Есть два ассоциативних массива. К примеру таких:
Array1 ( [a11] => р [a12] => т [a13] => е [a14] => о [a15] => м
[a16] => р [a17] => е [a18] => т [a19] => [a110] => )


Array2 ( [a11] => т [a12] => е [a13] => р [a14] => м [a15] => о
[a16] => м [a17] => е [a18] => т [a19] => р [a110] => )

Нужно их сравнить и вывести % расхождения.
Количество записей одинаково.
Помогите пожалуйста.
Функции array_diff() или array_intersect() не подходят поскольку почему-то не учитывают ключи. Например в приведенных выше массивах array_intersect() выдает 100% вхождение.
Спасибо.
 
 Top
valenok Модератор
Отправлено: 01 Июля, 2008 - 00:08:37
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




как вариант implode + levenshtein
тогда позиция букв вообщем то тоже юудет учитываться.

А вообше можете и сами написать свою функцию.
пройходить по массиву циклом и сравнивать arr1[$i]==arr2[$i]


-----
Truly yours, Sasha.
 
My status
 Top
Aquilla
Отправлено: 01 Июля, 2008 - 11:01:01
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2008  


Помог: 0 раз(а)




С функцией у меня не получилось.
А вот implode + levenshtein прекрасно работает
Большое спасибо.
 
 Top
valenok Модератор
Отправлено: 01 Июля, 2008 - 12:06:53
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А это странно.
Так как это вариант намного лучше чем implode + levenshtein

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. $diff = abs(count($arr1)-count($arr2));
  5.  
  6. foreach($arr1 as $key => $val)
  7.  if( !isset($arr2[$key])  OR $arr2[$key]!=$val)
  8.   $diff++;
  9.  


-----
Truly yours, Sasha.
 
My status
 Top
Aquilla
Отправлено: 01 Июля, 2008 - 22:08:19
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2008  


Помог: 0 раз(а)




Спасибо за оперативность,
Обработка массива циклом наверное быстрее будет работать, но метод с левенштейном мне тоже понравился.
Еще вопрос.
а как можно в одном из этих массивов все маленькие буквы перевести в большие?
пасиб.
 
 Top
EuGen Администратор
Отправлено: 01 Июля, 2008 - 22:38:32
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Aquilla
Отправлено: 06 Июля, 2008 - 22:34:33
Post Id



Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2008  


Помог: 0 раз(а)




к сожалению функция strtoupper на удаленном сервере не хотела работать с кирилическими символами, хотя локально у меня работала и с кирилицей. Пробовал на двух серверах. Причины я не понял, поэтому получилось такое:
для украинского алфавита.
CODE (text):
скопировать код в буфер обмена
  1. function str_to_upp($str){
  2.     return strtr($str,
  3. "\xe0\xe1\xe2\xe3\xe4\xe5\xba\xe6\xe7\xe8\xb3\xbf\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfc\xfe\xff",
  4.    
  5.     "\xc0\xc1\xc2\xc3\xc4\xc5\xaa\xc6\xc7\xc8\xb2\xaf\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xdc\xde\xdf");
  6. }

идея подсмотреная
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB