Непростое сравнение массивов
11416 повідомлень
#13 років тому
В общем сломал я что-то голову, подскажите как такое реализовать?Мне нужно сравнить массивы исключив из их значений все пробелы и вернуть результирующий массив, но такой что бы пробелы в нем НЕ были удалены.
Пример:
Есть три массива $arr1_copy, $arr2_copy, $arr3_copy:
$arr1_copy = array('мама мыла раму','папа чистил сапоги','я ел печеньки','ненавижу печеньки');
$arr2_copy = array('мамамыла раму','папачистилсапоги','ненавижу печеньки', 'труля ля','абракадара');
$arr3_copy = array('моя рама','папачистилсапоги','я ненавижу печеньки');
Удаляем пробелы:
$arr1 = array('мамамылараму','папачистилсапоги','яелпеченьки','ненавижупеченьки');
$arr2 = array('мамамылараму','папачистилсапоги','ненавижупеченьки', 'труляля','абракадара');
$arr3 = array('моярама','папачистилсапоги','яненавижупеченьки');
Производим манипуляции:
$arr = array_diff(array_intersect($arr1, $arr2), $arr3);
В итоге получаем:
array(2) {
=>
string(24) "мамамылараму"
=>
string(32) "ненавижупеченьки"
}
Теперь мне нужно составить такой же массив, но с пробелами в строках.
Как теперь взять нужные значения с пробелами из массивов $arr1_copy, $arr2_copy, $arr3_copy? Значения подойдут из любого массива, главное что этот массив до удаления пробелов.
1649 повідомлень
#13 років тому
Честно говоря, не понятно зачем такое надо.С использованием array_diff, наверное никак. Придется по другому написать алгоритм.
3195 повідомлень
#13 років тому
Или-или: 1) После "в итоге получаем" добавить цикл прохода по всем элементам каждого массива, в котором в каждом элементе массива убиваем пробелы, сравниваем с элементами итогового цикла, если совпадают, в новый массив добавляем элемент с пробелами.
2) Перед тем как удалить пробелы преобразовать массивы в ассоциативные ключ->значение, затем твой код, затем в цикле пройтись по всем элементам исходного массива и по ключам восстановить элементы с пробелами.
Мне так кажется...
11416 повідомлень
#13 років тому
Вот мне ArtPro подсказывает сделать именованный массив, тогда на выходе получаем
array(2) {
=>
string(24) "мамамылараму"
=>
string(32) "ненавижупеченьки"
}
В принципе проблему решает.
AlekartRu, да второй вариант думаю подойдет. Спасибо.
Возможны ли спецсимволы в качестве ключа?
А какой из двух вариантов будет менее ресурсоемкий? Обработок будет огромное количество.
6863 повідомлення
#13 років тому
Цитата ("Hungry_Hunter"):Вот мне ArtPro подсказывает сделать именованный массив, тогда на выходе получаем
array(2) {
=>
string(24) "мамамылараму"
=>
string(32) "ненавижупеченьки"
}
Опередили. Хотела диву даваться, что мешает сразу оба значения обрабатывать.