Добрый день!
Наведите на верный путь.
Версия php 5.3.6
Есть 2 неравнозначных массива. Они заполнены из файлов dbf.
Массив 1.
$REP210G = "REP210G.dbf";
$open_db210 = dbase_open($REP210G, 0);
$records = dbase_numrecords($open_db210);
for ($i = 1; $i <= $records; $i++)
{
$dbf[$i] = dbase_get_record_with_names($open_db210, $i); // $i+1 если мусор в 0-й строке
$brr[$i]['lic'] = trim($dbf[$i]['lic']);
$brr[$i]['add'] = trim($dbf[$i]['add']);
$brr[$i]['dom'] = trim($dbf[$i]['dom']);
$brr[$i]['kv'] = trim($dbf[$i]['kv']);
$lic = $brr[$i]['lic'];
$adres = trim(iconv('CP1251','UTF-8', $brr[$i]['add']));
$house = trim(iconv('CP1251','UTF-8', $brr[$i]['dom']));
$appart = $brr[$i]['kv'];
$array_210 = array($lic, $adres, $house, $appart);
}
Второй массив.
$db_novakom = 'novakom.dbf';
$open_db_novakom = dbase_open($db_novakom, 0);
$records_nova = dbase_numrecords($open_db_novakom);
for ($n = 1; $n <= $records_nova; $n++)
{
$dbf[$n] = dbase_get_record_with_names($open_db_novakom, $n); // $i+1 если мусор в 0-й строке
$brr[$n]['NUM'] = trim($dbf[$n]['NUM']);
$brr[$n]['SUMMA'] = trim($dbf[$n]['SUMMA']);
$brr[$n]['N_P'] = trim($dbf[$n]['N_P']);
$brr[$n]['ADATEOPL'] = trim($dbf[$n]['ADATEOPL']);
$brr[$n]['NAZN'] = trim($dbf[$n]['NAZN']);
$number = $brr[$n]['NUM'];
$sum = $brr[$n]['SUMMA'];
$descr = trim(iconv('CP1251','UTF-8', $brr[$n]['N_P']));
$date = $brr[$n]['ADATEOPL'];
$nazn = $brr[$n]['NAZN'];
$open_nova = array($number, $sum, $descr, $date, $nazn);
}
Необходимо сравнить их значения по полям из массива $open_nova в поле $number со значением в массиве $array_210 поля $lic и вывести результат в файл db_out.dbf имеющий структуру
$open_db = dbase_open($db_out, 0);
$def = array(
array("SUMMA", "C", 18),
array("ADATEOPL", "C", 10),
array("N_P", "C", 254),
array("NUM", "C", 13),
array("ADD", "C", 31),
array("DOM", "C", 3),
array("KV", "C", 3),
array("NAZN", "C", 10)
);
}
т.е. на выходе вывести данные найденных значений поля $lic в массиве $array_210
Сравнивать пытался таки образом.
function diff(array $array_210, array $open_nova): array {
$result = $array_210;
foreach ($result as $key => $values)
{
if( array_key_exists($key, $open_nova))
{
$result[$key] = array_diff($values, $open_nova[$key]);
if($result[$key] === [])
{
unset($result[$key]);
}
}
}
return $result;
}
print_r(diff($array_210, $open_nova));
но выдаётся ошибка 404 Not Found.