#php #arrays #function #include
#php #массивы #функция #включить
Вопрос:
Как бы я использовал функцию include() в массиве?
Например, у меня есть массив, в котором перечислены несколько округов, вместо ввода всех округов в массив, я создал текстовый файл округов, разделенных запятыми. По логике вещей, я думаю, что это должно работать как таковое:
array (include ("counties.txt"));
Но он создает список вне функции массива.
существует ли другой метод использования функции include() в массиве?
Ответ №1:
Один из способов заключается в том, чтобы ваш counties.txt
файл имел следующий формат:
<?php
return array(
'country1',
'country2',
// etc.
);
Затем просто включите его в свой массив, например:
<?php
$arr = include('counties.txt');
Другой метод заключается в анализе counties.txt
типа:
<?php
$list = file_get_contents('counties.txt');
// Normalize the linebreaks first
$list = str_replace(array("rn", "r"), "n", $list);
// Put each line into its own element within the array
$arr = explode("n", $list);
Любой способ работает и приведет к тому же результату.
Комментарии:
1. Согласно php.net/manual/en/function.include.php (пример №5) на PHP.net , include() не возвращает содержимое файла; он просто возвращает
1
, если в файле нет оператора return . В этом случае он вернет содержимоеreturn;
инструкции. Так что это не будет работать с non-.php в любом случае, файлы. Я рекомендую вместо этого использовать readfile() или filegetcontents(), как объясняется в других ответах.2. Исправлено. Спасибо, что заметили это.
Ответ №2:
Я думаю, вы просто хотите использовать file('countries.txt', FILE_IGNORE_NEW_LINES);
Комментарии:
1. как ни странно, file() — это то, что помогло решить мою проблему. Спасибо.
Ответ №3:
Попробуйте file_get_contents()
$temp_string = file_get_contents('counties.txt');
$temp_array = array($temp_string);
Ответ №4:
Я бы попробовал readfile(), разделяя каждый округ на новой строке. Функция readfile() помещает каждую строку файла в индексированный массив.
$array = readfile('counties.txt');