Как выбрать похожие (одинаковые) значения из двух массивов?
Вопрос. Есть два массива.
Первый $array_210
for ($i = 1; $i <= $records; $i++) { $dbf[$i] = dbase_get_record_with_names($open_db210, $i); $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 ); print_r($array_210); } |
for ($i = 1; $i <= $records; $i++) { $dbf[$i] = dbase_get_record_with_names($open_db210, $i); $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 ); print_r($array_210); }
Второй $open_db_novakom
for ($i = 1; $i <= $records; $i++) { $dbf[$i] = dbase_get_record_with_names($open_db_novakom, $i); $brr[$i]['NUM'] = trim($dbf[$i]['NUM']); $brr[$i]['SUMMA'] = trim($dbf[$i]['SUMMA']); $brr[$i]['N_P'] = $dbf[$i]['N_P']; $brr[$i]['ADATEOPL'] = trim($dbf[$i]['ADATEOPL']); $brr[$i]['NAZN'] = trim($dbf[$i]['NAZN']); $number= $brr[$i]['NUM']; $sum = $brr[$i]['SUMMA']; $descr = $brr[$i]['N_P']; $date = $brr[$i]['ADATEOPL']; $nazn = $brr[$i]['NAZN']; $open_db_novakom = array( $number, $sum, $descr, $date, $nazn ); print_r($open_db_novakom); } |
for ($i = 1; $i <= $records; $i++) { $dbf[$i] = dbase_get_record_with_names($open_db_novakom, $i); $brr[$i]['NUM'] = trim($dbf[$i]['NUM']); $brr[$i]['SUMMA'] = trim($dbf[$i]['SUMMA']); $brr[$i]['N_P'] = $dbf[$i]['N_P']; $brr[$i]['ADATEOPL'] = trim($dbf[$i]['ADATEOPL']); $brr[$i]['NAZN'] = trim($dbf[$i]['NAZN']); $number= $brr[$i]['NUM']; $sum = $brr[$i]['SUMMA']; $descr = $brr[$i]['N_P']; $date = $brr[$i]['ADATEOPL']; $nazn = $brr[$i]['NAZN']; $open_db_novakom = array( $number, $sum, $descr, $date, $nazn ); print_r($open_db_novakom); }
Из массива $open_db_novakom из переменной $number необходимо взять значение и найти его в массиве $array_210 в переменной $lic. И так необходимо перебрать все значения из $open_db_novakom и сравнить со значениями в массиве
$array_210.
Далее все совпадающие значения $number с $lic необходимо записать в файл в файл out.dbf имеющий структуру полей (SUMMA, ADATEOPL, N_P, NUM, add, dom, kv, nazn), т.е. объединить данные найденных значений из 2х массивов $open_db_novakom и $array_210 и записать в файл out.dbf
Спасибо.
Дополнительно:
Два цикла for один в другом, первый проходит по одному массиву, второй, соответственно, по второму и сравнивается каждое значение из массивов, при совпадении вывод, запись и тд
Ответы:
Сравниваю массивы таким способом.
$array_210 = array($lic, $adres, $house, $appart);
$open_nova = array($number, $sum, $descr, $date, $nazn);
$c = array_intersect($array_210, $open_nova);
foreach ($c as $v)
{
if ($v == $number)
echo $number;
echo $sum;
echo $descr;
echo $date;
echo $nazn;
}
print_r($c);
но результат почему-то NULL
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для выбора похожих (одинаковых) значений из двух массивов в PHP можно воспользоваться функцией array_intersect(). Эта функция принимает два или более массивов в качестве аргументов и возвращает массив, содержащий только те элементы, которые присутствуют во всех переданных массивах.
Пример использования функции array_intersect():
$array1 = [1, 2, 3, 4, 5]; $array2 = [3, 4, 5, 6, 7]; $intersect = array_intersect($array1, $array2); print_r($intersect);
В данном примере мы объявляем два массива $array1 и $array2, содержащие различные значения. Затем мы используем функцию array_intersect() с аргументами $array1 и $array2, чтобы получить массив $intersect, содержащий только те значения, которые присутствуют и в $array1, и в $array2. Результатом выполнения данного кода будет массив [3, 4, 5], так как эти значения присутствуют в обоих исходных массивах.
Если необходимо выбрать только уникальные значения из обоих массивов, можно воспользоваться функцией array_unique():
$uniqueValues = array_unique(array_merge($array1, $array2)); print_r($uniqueValues);
В данном примере мы объединяем два массива с помощью функции array_merge(), затем применяем к объединенному массиву функцию array_unique(), чтобы получить только уникальные значения из обоих массивов. Результатом выполнения данного кода будет массив [1, 2, 3, 4, 5, 6, 7], так как все значения из обоих исходных массивов будут представлены только один раз.
Таким образом, для выбора похожих (одинаковых) значений из двух массивов в PHP можно воспользоваться функцией array_intersect() или для выбора уникальных значений - функцией array_unique().