предположим есть массив с строкой - Программирование на PHP для новичков есть такой же массив с аналогичной строкой - Программирование на PHP для новичков в массиве может быть много строк как в одном так и в другом и нужно их всех сравнить Пример: берем первую строку с массива и пробегаем по другому массив, если равны - то тру или фолс, вообщем смысл такой. Вопрос: как их сравнить, на 100% совпадание? пробовал различные функции на сравнение, но допустим таких строк в массиве будем много и они ВСЕ одинаковые, то из 100% строк оно скажет 60% строк совпадают а 40% - нет, хотя они все равны... потом думал, если разбить одну и другую строку на символы и сравнить их по символьно.... когда строк мало - работает норм, совпадение 100%, но если таких строк будет много... то сервак падает))) может есть у кого-то мысли по поводу, спасибо?
если массивы примерно одинаково наполнены, то можно сделать цикл в котором сделать условие, что каждая строка одного массива будет сравниваться с каждой строкой другого и поставить счётчик... если значение счётчика будет под конец совпадать с велечиной массива, то совпадение 100% Код (Text): //первый массив $arr[0]="aaa"; $arr[1]="bbb"; $arr[2]="ccc"; //второй массив $arr2[0]="aaa"; $arr2[1]="bbb"; $arr2[2]="ccc"; $counter=0; for($i=0;$i<count($arr);$i++){ if($arr[$i]==$arr2[$i]){ $counter++; } } if($counter==count($arr)){echo "100%";} {echo "<strike>100%</strike>";} а если нужно сколько конкретно процентов совпало ...можно поделить счетчик на сумму элементов в массиве и умножить на 100
Vegas не, в по количеству символов я сравниваю в самом начале если не равны то фолс. если равны то нужно проверить более детально Sergey89 не не, вы наверно не правильно поняли я с своими массивами вас не в ту сторону направил - я имею ввиду, что-нибудь типа - strcmp, similar_text, levenshtein и прочих функций когда мы имеем полностью идентичные два массива с значениями foreach (1 массив) то берем 1. элемент с первого и массива foreach (2 массив) проходим по второму массиву и каждый элемент второго массива сравниваем с первым таким способом к примеру strcmp ($arr_with_string1, $arr_with_string2) вообщем оно норм, но не совсем т.к. массивы все идентичны но процент совпадения оно дает где-то 80% ... хотя все идентично....
может, что-то типа такого? PHP: <?php function arrayCompare($arr1, $arr2) { if(count($arr1)<count($str2)) { $tmp = $arr1; $arr1 = $arr2; $arr2 = $tmp; unset($tmp); } $count = 0; for($i=0, $c=count($arr1); $i<$c; $i++) { if(in_array($arr1[$i], $arr2)) { $count++; } } return $count/count($arr2)*100; } ?>
TheShock не, но, что-то подобное решение на столько было простым, что я честно говоря даже стыжусь его показать это равносильно если б я ответил 2+2=5...