Артем Л.
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) "ненавижупеченьки"
}



Опередили. Хотела диву даваться, что мешает сразу оба значения обрабатывать.
Андрей К.
1172 повідомлення
#13 років тому
function u() {
$result = array();
foreach(func_get_args() as $arr) {
foreach($arr as $value)
$result = $value;
}
return array_values($result);
}