PHP — использовать функцию include() внутри массива

#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');