Здравствуйте, имеются csv файлы Главный файл из которого нужно брать значения для поиска в других, и файлы в которых нужно искать значения из главного файла Файлы вида:
первый(главный) -
Заголовок1, Заголовок2, ФИО , заголовок3, Дата регистрации, Заголовок 4..тд..
val , val, Иванов Иван Иванович , val , 19.01.2014 , val
val , val, Петров Петр Петрович , val , 11.05.2017 , val
val , val, Никифоров Валентин Семенович , val , 29.01.2017 , val
второй -
Заголовок1;Заголовок2;заголовок3;Фамилия;Имя;Отчество; Дата регистрации;Заголовок 4..тд.
val ; val ; val; Склифосовский;Андрей;Валентинович;18.09.2016; val;
val ; val ; val; Никифоров;Валентин;Семенович; 29.01.2017; val;
val ; val ; val; Кубриков;Иван;Александрович; 09.03.2017; val;
вот что я пытался: считать файлы, разложить в массивы и потом уже сравнивать, получал странные результаты или ложил сервер т.е мне нужно: ФИО и дату регистрации сравнивать с тем же самыми параметрами из 2го файла,как видно во 2 файле фио берется из 3х колонок, подскажите как правильно это реализовать?
$data = File("text.csv");
for ($i = 0; $i < count($data); $i++)
{
$head[] = explode(",", $data[$i]);
}
echo "<pre>";
//print_r($head);
echo "</pre>";
/*сверху главный файл, снизу остальное, тк разные разделители*/
$data2 = File("test2.csv");
for ($i = 0; $i < count($data2); $i++)
{
$array[] = explode(";", $data2[$i]);
}
echo "<pre>";
//print_r($array);
echo "</pre>";
$count_no=0;
foreach($head as $key => $value) // перебираю первый массив для того чтоб перебрать вложенные и извлеч ФИО
{
foreach ($value as $k => $val) //перебираю вложенные масивы т.е там где есть все данные ФИО , дата для того чтоб сравнить в следующем цикле с другим файлом
{
// echo $k.$val."</br>";
foreach ($array as $kl => $arr)//пытаюсь сравнить значения из прошлого цикла с новым файлом
{
if ($val[6]==$arr[7]) { //дата регистрации
echo "found</br>";
} else $count_no++;
}
}
echo "<pre>";
print_r($count_no);
echo "</pre>";
}
Откройте оба файла через fopen
и прочитайте их через fgetcsv
, при этом учитывайте, что в первом файле не дефолтный разделитель.
$file1=fopen('test1.csv','r');
$row=0;
while (($data = fgetcsv($file1, 1000, ",")) !== FALSE) {
//тут необходимо заполнить первый массив данными из файла, например
$data1[$row]['header1']=$data[0]; // индекс может быть другой, каюсь - не помню точно.
$data1[$row]['header2']=$data[1];
$data1[$row]['fio']=$data[2];
$data1[$row]['register_date']=$data[3]
// и т.д.
$row++;
}
Затем точно такая же операция, для другого файла, но у него другой разделитель, т.е. нужно так fgetcsv($file2, 1000, ";")
Далее можно или разбить ФИО на 3 части из первого файла и искать по частям, а можно сделать дополнительную строку в массиве для поиска путем склейки 2х колонок ФИО+дата регистрации из первого файла и 4х колонок из второго файла (чтобы просто искать по 1й колонке, а не по 4м)
Для первого файла
$data1=('trim',$data1);
foreach ($data1 as $data_key=>$data_value) {
$data1[$data_key]['fio_data']=$data_value['fio'].' '.$data_value['register_date'];
}
И аналогично для второго, только с большим количеством колонок.
Затем берете foreach
и прокручиваете оба массива с сравнением по этой колонке.
Виртуальный выделенный сервер (VDS) становится отличным выбором
решил сделать партнерку, вот такого вида ссылка https://mysitecom/p644320/vip , где p644320 - это id того, кто привлекает, как мне при переходе на мой сайт обрабатывать...
Есть 2 известных плагина: WooCommerce, WP Job ManagerПри отображении списка вакансий или резюме в админке пользователя (Используется админка Woo) не работает...
Помогите разобраться в основах1 байт = 8 бит В 1 байте может максимум уместиться максимум 255 значений