Как выбрать похожие (одинаковые) значения из двух массивов?

Ссылка скопирована
1 ответ

Вопрос. Есть два массива.
Первый $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

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Антон С. Ответ

Для выбора похожих (одинаковых) значений из двух массивов в 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 = [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);

$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().

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно