Получение уникальных значений с разными ключами

#php #arrays

#php #массивы

Вопрос:

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

 Array
(
    [0] => Array
        (
            [Supplier Name] => John Lewis
            [Supplier Name2] => Fenwicks
            //other data
        )
    //Other elements
)
 

То, что я пытаюсь сделать, это получить все уникальные sluppliers. Проблема в том, что если в массиве более одного поставщика, в его конец добавляется число, например, имя поставщика2.
На данный момент у меня есть вот что.

 $suppliers = array();
foreach($csvArray as $k => $row) {
    foreach($row as $key => $value) {
        $suppliers[] = $csvArray[$k]['Supplier Name'];
    }
}
$uniqueSuppliers = array_unique($suppliers);
 

Теперь это возвращает все уникальные значения, где ключом является имя поставщика. Однако это не учитывает Имя поставщика 2, 3, 4 и т.д. Могу ли я каким-либо образом включить в этот поиск все, что начинается с имени поставщика?

Спасибо

Комментарии:

1. попробуйте это $suppliers[] = $value вместо этого $suppliers[] = $csvArray[$k][‘Имя поставщика’];

Ответ №1:

У вас есть ключ $key , просто проверьте, начинается ли он с Supplier Name

 foreach ($csvArray as $row) {
    foreach ($row as $key => $value) {
        if (strpos($key, 'Supplier Name') === 0) {
            $suppliers[] = $value;
        }
    }
}
 

Комментарии:

1. при использовании strpos обязательно используйте строгое сравнение === , потому false == 0 что в php.