Распечатывать данные CSV, только если они существуют в обоих файлах CSV

У меня есть два файла CSV с именем whatineed.csv/all.csv, и я хочу распечатать данные только тогда, когда они существуют в обоих файлах.

Я пробовал некоторые функции, но ничего не дает мне нужного результата.

Заранее спасибо

whatineed.csv got:

Array
(
    [0] => 0424
    [1] => 9007382026
)
Array
(
    [0] => 15043
    [1] => 90073225
)
Array
(
    [0] => 15043-3
    [1] => 900735226
)
all.csv

Array
(
    [0] => 0424
    [1] => Text
    [2] => Text
    [3] => Text
    [4] => Text
    [5] => 9007382026
)
Array
(
    [0] => 456456
    [1] => Text
    [2] => Text
    [3] => Text
    [4] => Text
    [5] => 486424
)
Array
(
    [0] => 15043-3
    [1] => Text
    [2] => Text
    [3] => Text
    [4] => Text
    [5] => 900735226
)

Я пытался использовать in_array

$sourceall = all.csv;
$sourceneed = whatineed.csv;

if (($handle1 = fopen($sourceall, "r")) !== FALSE && ($handle = fopen($sourceneed, "r")) !== FALSE) {
    while (($data1 = fgetcsv($handle1, 0, "|")) !== FALSE && ($data = fgetcsv($handle, 0, "|")) !== FALSE) {

if (in_array($data[$mainInfo[2]], array_column($data1, $data1[$mainInfo1[5]]))) {
            print_r($data1);
        }

// another one

       if (in_array($data[$mainInfo[0]], $data1)){
            print_r($data1);
        }

 }
}

Вот что я хочу распечатать

Array
(
    [0] => 0424
    [1] => Text
    [2] => Text
    [3] => Text
    [4] => Text
    [5] => 9007382026
)

Array
(
    [0] => 15043-3
    [1] => Text
    [2] => Text
    [3] => Text
    [4] => Text
    [5] => 900735226
)

потому что элементы массива из whatineed.csv существуют в all.csv

Попробуйте сравнить массивы с помощью array_diff();

stefo91 23.05.2019 15:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Демонстрационная ссылка.

Вы можете использовать некоторые комбинации столбец_массива и array_intersect_key следующим образом:

$temp = array_column($a1, null, 0); // considers 0 as key and null means whole array as value
$temp1 = array_column($a2, null, 0);
$temp2 = array_intersect_key($temp1, $temp); // array_intersection based on matching key

Создайте $a1 и $a2 из whatineed.csv и all.csv соответственно. Затем передайте эти два массива в приведенный выше фрагмент, он будет работать.

@quickSwamp, когда я читаю CSV-файлы, каждая строка представляет собой отдельный массив, как вы объединили разные массивы в один массив, например $a1 и $a2 в демонстрационной ссылке?

M.Aldein 24.05.2019 10:33

В цикле foreach выполните $a1[] = $val вашего цикла foreach

Rahul 24.05.2019 10:34
$csv = array_map('str_getcsv', file($file)); Проверьте эту команду из связь
Rahul 24.05.2019 10:46

$a1 = 220 строк $a2 = 5000 строк в моем коде $temp2 печатает строки первый 220, а не строки, которые находятся в $a1 и $a2

M.Aldein 24.05.2019 11:36

Вы сопоставляете записи из $a1 и $a2, верно? при пересечении двух массивов вы получите равный или меньший небольшой массив.

Rahul 24.05.2019 11:39

теперь он работает, но возвращает только 1 запись как и массив

M.Aldein 24.05.2019 13:50

Сравните мой массив в демо-ссылке с вашим и проверьте

Rahul 24.05.2019 13:52

большое спасибо, все сработало, это была моя ошибка, не сработало с самого начала.

M.Aldein 27.05.2019 10:26

Другие вопросы по теме