php explode() 将文本文件中的所有值存储到索引 [0]
php explode() storing all values from test filt to index [0]
我是一名学生,目前正在学习 PHP 并且很难让 explode() 函数按照我想要的方式工作。
以下文本文件 "vacations.txt" 包含:
"54321", "Big Island Hawaii", "2999.00", "Best beaches big volcano"
"87654", "Cruise Caribbean", "3500.00", "Ocean view with balcony Cancun Jamaica etc."
"09876", "Rome and Madrid", "3999.00", "I see Italy I see Spain"
"32198", "Ski Tahoe", "1200.00", "Ski all day Gamble all night"
我试图将其放入一个由逗号分隔的数组中。使用 print_r(),我可以看到它都进入了数组的第一个索引。
这是我的代码:
function displaySpecials() {
$prodString = include("vacation.txt");
$vacArray = explode(',', $prodString );
print_r($vacArray);
}
这是输出:
"54321", "Big Island Hawaii", "2999.00", "Best beaches big volcano"
"87654", "Cruise Caribbean", "3500.00", "Ocean view with balcony
Cancun Jamaica etc." "09876", "Rome and Madrid", "3999.00", "I see
Italy I see Spain" "32198", "Ski Tahoe", "1200.00", "Ski all day
Gamble all night"Array ( [0] => 1 )
我已经搜索并阅读了我能找到的关于 explode() 的所有内容,但我无法弄清楚为什么会这样。我的最终目标是在 table 中输出一个具有 4 行和 4 列的多维数组,以显示文本文件中的 16 个值。
非常感谢所有帮助。提前致谢!
尝试用 file_get_contents("vacation.txt")
替换 include("vacation.txt")
。
The include statement includes and evaluates the specified file.
Reads entire file into a string
您的代码应如下所示:
function displaySpecials() {
$prodString = file_get_contents("vacation.txt");
$vacArray = explode(',', $prodString );
print_r($vacArray);
}
因为这基本上是一个 csv
文件,我建议使用 fgetcsv,像这样:
if (($h = fopen('vacation.txt', 'r')) !== false) {
while (($data = fgetcsv($h, 1000, ',')) !== false) {
// Fetch the data here
}
}
您也可以选择使用 str_getcsv:
$data = array_map('str_getcsv', file('vacation.txt'));
The include statement includes and evaluates the specified file.
include 将评估其中的任何内容,基本上包括其他 php 脚本。
您需要获取其内容。
下面我使用 file 逐行获取文件内容。
function displaySpecials() {
$lines = file("vacation.txt"); // will return lines in array
foreach($lines as $line){ // loop for each line
$vacArray[] = explode(",", $line); // insert resulting array to last index of $varArray
}
print_r($vacArray);
return $vacArray;
}
此外,该文件看起来很正常 .csv
您可以使用 fgetcsv
。查看官方docs中的示例。
我是一名学生,目前正在学习 PHP 并且很难让 explode() 函数按照我想要的方式工作。
以下文本文件 "vacations.txt" 包含:
"54321", "Big Island Hawaii", "2999.00", "Best beaches big volcano"
"87654", "Cruise Caribbean", "3500.00", "Ocean view with balcony Cancun Jamaica etc."
"09876", "Rome and Madrid", "3999.00", "I see Italy I see Spain"
"32198", "Ski Tahoe", "1200.00", "Ski all day Gamble all night"
我试图将其放入一个由逗号分隔的数组中。使用 print_r(),我可以看到它都进入了数组的第一个索引。 这是我的代码:
function displaySpecials() {
$prodString = include("vacation.txt");
$vacArray = explode(',', $prodString );
print_r($vacArray);
}
这是输出:
"54321", "Big Island Hawaii", "2999.00", "Best beaches big volcano" "87654", "Cruise Caribbean", "3500.00", "Ocean view with balcony Cancun Jamaica etc." "09876", "Rome and Madrid", "3999.00", "I see Italy I see Spain" "32198", "Ski Tahoe", "1200.00", "Ski all day Gamble all night"Array ( [0] => 1 )
我已经搜索并阅读了我能找到的关于 explode() 的所有内容,但我无法弄清楚为什么会这样。我的最终目标是在 table 中输出一个具有 4 行和 4 列的多维数组,以显示文本文件中的 16 个值。
非常感谢所有帮助。提前致谢!
尝试用 file_get_contents("vacation.txt")
替换 include("vacation.txt")
。
The include statement includes and evaluates the specified file.
Reads entire file into a string
您的代码应如下所示:
function displaySpecials() {
$prodString = file_get_contents("vacation.txt");
$vacArray = explode(',', $prodString );
print_r($vacArray);
}
因为这基本上是一个 csv
文件,我建议使用 fgetcsv,像这样:
if (($h = fopen('vacation.txt', 'r')) !== false) {
while (($data = fgetcsv($h, 1000, ',')) !== false) {
// Fetch the data here
}
}
您也可以选择使用 str_getcsv:
$data = array_map('str_getcsv', file('vacation.txt'));
The include statement includes and evaluates the specified file.
include 将评估其中的任何内容,基本上包括其他 php 脚本。
您需要获取其内容。
下面我使用 file 逐行获取文件内容。
function displaySpecials() {
$lines = file("vacation.txt"); // will return lines in array
foreach($lines as $line){ // loop for each line
$vacArray[] = explode(",", $line); // insert resulting array to last index of $varArray
}
print_r($vacArray);
return $vacArray;
}
此外,该文件看起来很正常 .csv
您可以使用 fgetcsv
。查看官方docs中的示例。