[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сравнение 2-х массивов
Undertaker
Здавствуйте ув. форумчане. Очень не хочется наговнокодить, а потому обращаюсь к вам.
Есть у меня 2 массива такого вида:

02.04 - созвон<==>02.04 - не берет
07.04 - созвон<==>07.04 - не берет
08.04 - созвон<==>14.04 - не берет
14.04 - созвон<==>16.04 - занято
16.04 - созвон<==>20.04 - не берет
17.04 - созвон<==>21.04 - не берет
20.04 - созвон<==>24.04 - не берет
21.04 - созвон<==>
24.04 - созвон<==>
и т.д.

т.е. первый слева, второй справа.
Мне надо из них сформировать строку
02.04 - созвон - не берет
если во втором массиве нет нужной даты то строка выглядит так:
08.04 - созвон - "пустое значение"
Массивы формируются программно, а потому заранее определить сколько в них значений и какие числа там будут невозможно, известно лишь, что первый массив всегда больше или равен второму.
Были мысли просто брать число из первого массива и искать по второму, так же думал делать сравнения и если нет то первый массив[$i+1], но как реализовать я пока не допёр
Но как правильно не могу понять, ещё очень важно скорость работы (данных много) хотелось бы пошустрее

_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
FatCat
Поменять структуру массивов: сделать дату (если она уникальна) ключом массива.

_____________
Бесплатному сыру в дырки не заглядывают...
Undertaker
FatCat
Ну хорошо, раньше это были 2 строки разделённые "/n" и каждое значение масиво было пропущено через регулярное выражение, которое их и привел ку нужному виду... Это придётся создавать массив в массиве и дополнительно обрабатывать или как?
Я думаю так проще объяснить:

$soz=$data['10']; // импорт из csv файла
$rez=$data['11']; //и такая работа будет проведена с каждой ячейкой
$matches = explode("\n", $soz);
$matches_rez = explode("\n", $rez); //создаю массив из строки

for ($i = 0; $i < count($matches); $i++) //привожу к одному виду каждое значение
{
$string = $matches[$i];
$pattern = "/(\d\d).*(\d\d)\W+(\w+)/u";
$replacement = "\$1-\$2 - \$3"; //ну и соответственно результат указанный на экране
$str = $matches_rez[$i];
$pat = "/(\d\d).*(\d\d)\W+(\w+)/u";
$rep = "\$1-\$2 - \$3";
echo preg_replace($pattern, $replacement, $string)."<==>".preg_replace($pat, $rep, $str)."<br>";
}
echo "<hr>";
echo "<br>";
echo "<br>";


_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.