in_array игнорирование первого элемента в массиве - PullRequest
0 голосов
/ 24 апреля 2020

Это меня поставило в тупик. Мы получаем большой CSV-файл от нашего поставщика, который загружаем в наше приложение. Расположение информации никогда не менялось, поэтому мы использовали ключи массива для поиска / сохранения данных ie. $first_name = $data[1];

Недавно наш поставщик начал изменять порядок столбцов, и я делаю изменения, чтобы проверить, существуют ли требуемые заголовки, прежде чем наша система загрузит данные из файла CSV.

// get headers from csv file
$header = fgetcsv($handle);
// create test aray of required headers
$validate_header = ["FamName", "FirstName", "StaffNo", "HomeGroup", "PayLevel", "Gender", "Status"]; 

foreach($validate_header as $v){
   if (!in_array($v, $header)) {
       // error header not found
       // return user to upload form with error
   } 
}   
// headers all found

Проблема, с которой мы столкнулись, заключается в том, что первое значение в массиве $ header ($header[0]) не проходит проверку.

, если мы дампим переменную, в которой она потерпела неудачу, всегда первое значение [0] в массиве. Мы можем изменить это на что-нибудь, и это всегда потерпит неудачу.

$v = "FamName"

$header = array:6 [▼
  0 => "FamName"
  1 => "FirstName"
  2 => "StaffNo"
  3 => "PayLevel"
  4 => "Gender"
  5 => "Status"
]

Если бы кто-то мог указать мне на причину, я был бы очень признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...