Я вижу странную проблему с некоторым (должно быть простым) кодом PHP в базовом скрипте.
У меня есть многомерный ассоциативный массив $ accounts, который при использовании var_dump выглядит так:
Array(4) {
[0] =>
array(3) {
'account' =>
string(37) "Flood Cleanup City - Desktop - Exact "
'parameter' =>
string(23) "flood_cleanup_city_d_em"
'phone' =>
string(0) ""
}
[1] =>
array(3) {
'account' =>
string(51) "Flood Cleanup City - Desktop - Exact Call Extension"
'parameter' =>
string(3) "N/A"
'phone' =>
string(0) ""
}
[2] =>
array(3) {
'account' =>
string(38) "Flood Cleanup City - Desktop - Phrase "
'parameter' =>
string(23) "flood_cleanup_city_d_pm"
'phone' =>
string(0) ""
}
[3] =>
array(3) {
'account' =>
string(52) "Flood Cleanup City - Desktop - Phrase Call Extension"
'parameter' =>
string(3) "N/A"
'phone' =>
string(0) ""}
}
Итак, достаточно просто. Этот массив создается в функции и передается в качестве возвращаемого значения переменной $ listAccounts.
Я просто хочу перебрать $ listAccounts и извлечь значение account, поэтому написал следующее:
foreach($listAccount as $account)
{
$accountName = $account['account'];
echo $accountName;
}
Я ожидал, что он выведет четыре строки учетной записи. Вместо этого $ account ['account'] возвращает NULL. НО, если я использую функцию array_keys для извлечения имен ключей из массива и использую этот код, он работает правильно:
$accountName = $account[array_keys($account)[0]];
В случае, если это может быть актуально, функция, которая генерирует многомерный массив, использует функцию fgetcsv () для анализа файла CSV:
function getAccounts()
{
$handle = fopen("water.csv","r");
$header = NULL;
$accounts = array();
$n = 0;
while (!feof($handle)) {
$account = fgetcsv($handle);
if (!$header)
{
$header = $account;
}
else
{
$accounts[] = array_combine($header,$account);
}
}
fclose($handle);
echo var_dump($accounts);
return $accounts;
}






У вас есть странный первый невидимый символ в названии ключа "аккаунт". Отфильтруйте данные после анализа файла CSV.
Шестнадцатеричный код этого символа: efbbbf ..., который является спецификацией (метка порядка байтов). Если это вообще возможно, лучше сохранить .csv без него. Но если вы не можете, то снимите это с передней части файла перед синтаксическим анализом (так как обрезка не будет легко избавиться).
Спасибо вам обоим! Вот и все. Я использую PhpStorm и могу использовать опцию «Удалить спецификацию» в CSV-файле прямо из среды IDE. Спасибо!
Возможно, вы не думаете, что дублирующая ссылка связана, но она напрямую связана как toor, так и ускользнула. У вас есть спецификация в этом файле, который читается с первым полем заголовка в
fgetcsv. И вам нужно избавиться от него перед синтаксическим анализом csv.