#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.