将项目的 txt 文件列表转换为在 php 中创建数组的实际代码
Convert txt file list of items into the actual code for creating an array in php
首先,我对循环和数组很糟糕。
我有一个 txt 文件,我可以使用 file() 将其转换为数组,但是 我需要将文本文件中的数据提取到我的代码中以创建用于创建数组的代码,而不是将数据放入实际数组中。
我需要转:
cat
dog
mouse
动态添加到以下代码中(我不需要制作实际的输出数组,我需要以某种方式动态创建代码)。:
Array('cat'=>'cat','dog'=>'dog','mouse'=>'mouse')
我的问题是我需要执行以下操作:
txt文件输入:
Crafts & Sewing\Sale\Sale\Sale on Crafts & Sewing
Crafts & Sewing\Sale\Sale\Crafts & Sewing Sale
每个项目都在 txt 文件的单独一行(超过 10k 行)
输出(不是浏览器输出,仍在代码中):
$somevariable = Array('line1' => 'line1', 'line2' => 'line2')
但我尝试的一切都给了我实际的数组。
我需要通过获取文本文件的每一行并将其拉入我的代码并添加逗号、引号和 = 来为数组创建实际的代码 > 无需实际经历并手动将其全部添加到 10k 行代码中。
基本上我在一个文本文件中有一个巨大的列表,而不是手动添加和编辑超过 10k 行的文本文件以采用该格式,然后用它来弄乱我的代码,我想把它以编程方式全部转换为正确的格式,然后在我的代码中使用该变量而不是 10k 行代码。这也允许我在文本文件发生变化时用新内容编辑它,而无需编辑代码。
我正在使用它在网站中创建一个下拉菜单,格式如下:
array(
'id' => 'quality',
'type' => 'select',
'label' => __('Quality', 'esc_vff'),
'options' => array(
'New' => 'New',
'Used' => 'Used',
'Refurbished' => 'Refurbished'
),
'description' => __('Overstock data for "Quality" column.', 'esc_vff'),
'desc_tip' => true,
)
最后我希望能够做一些改变:
'options' => array(
'New' => 'New',
'Used' => 'Used',
'Refurbished' => 'Refurbished'
),
至:
'options' => $myarrayfromtextfile,
其中 $myarrayfromtextfile 是一个变量或给我应该放在那里的代码的东西,但不是 10k 行代码。
也许可以更好地阐明:打印出的数组有方括号...我需要找到一种方法来打印出数组的代码结构(我不知道这是否是最好的表达方式)因为我获取一堆文本并尝试将其格式化为看起来像我经历并编写了数组的逗号分隔代码版本
array('foo' => 'foo' , 'bar' => 'bar' )
所以我需要一个变量,当将其放入另一个数组时,该变量会 compiled/converted 到物理代码结构,而不是最终浏览器呈现的带有长度计数和括号的数组...
或者我会采取任何其他关于如何使 10k 行文本最终看起来像
的想法
array('foo' => 'foo' , 'bar' => 'bar' )
无需逐行添加逗号 and => 和 ''
使用phpfile()
File — 将整个文件读入数组
<?php
$lines = file('test.txt'); ///path to your file
foreach ($lines as $line_num => $line)
{
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
?>
根据您的要求
<?php
$lines = file('test.txt'); ///path to you file
$arrayVar = "array(";
foreach ($lines as $line_num => $line)
{
$arrayVar.= "'".preg_replace( "/\r|\n/", "", $line)."' => '".preg_replace( "/\r|\n/", "", $line)."',";
}
$arrayVar = rtrim($arrayVar,',').');';
echo $arrayVar;
?>
我的 test.txt 文件中有这个
abc
cde
efg
hij
klm
上面的代码将在您的浏览器中为您提供这样的数组
array('abc' => 'abc','cde' => 'cde','efg' => 'efg','hij' => 'hij','klm' => 'klm');
这是你想要的吗? @HostandMore
$a = array();
$f = file('file.txt');
foreach ($f as $n => $l)
{
$a["Line {$n}"] = $l;
}
这应该可以解决问题。
首先,我对循环和数组很糟糕。
我有一个 txt 文件,我可以使用 file() 将其转换为数组,但是 我需要将文本文件中的数据提取到我的代码中以创建用于创建数组的代码,而不是将数据放入实际数组中。
我需要转:
cat
dog
mouse
动态添加到以下代码中(我不需要制作实际的输出数组,我需要以某种方式动态创建代码)。:
Array('cat'=>'cat','dog'=>'dog','mouse'=>'mouse')
我的问题是我需要执行以下操作:
txt文件输入:
Crafts & Sewing\Sale\Sale\Sale on Crafts & Sewing
Crafts & Sewing\Sale\Sale\Crafts & Sewing Sale
每个项目都在 txt 文件的单独一行(超过 10k 行)
输出(不是浏览器输出,仍在代码中):
$somevariable = Array('line1' => 'line1', 'line2' => 'line2')
但我尝试的一切都给了我实际的数组。
我需要通过获取文本文件的每一行并将其拉入我的代码并添加逗号、引号和 = 来为数组创建实际的代码 > 无需实际经历并手动将其全部添加到 10k 行代码中。
基本上我在一个文本文件中有一个巨大的列表,而不是手动添加和编辑超过 10k 行的文本文件以采用该格式,然后用它来弄乱我的代码,我想把它以编程方式全部转换为正确的格式,然后在我的代码中使用该变量而不是 10k 行代码。这也允许我在文本文件发生变化时用新内容编辑它,而无需编辑代码。
我正在使用它在网站中创建一个下拉菜单,格式如下:
array(
'id' => 'quality',
'type' => 'select',
'label' => __('Quality', 'esc_vff'),
'options' => array(
'New' => 'New',
'Used' => 'Used',
'Refurbished' => 'Refurbished'
),
'description' => __('Overstock data for "Quality" column.', 'esc_vff'),
'desc_tip' => true,
)
最后我希望能够做一些改变:
'options' => array(
'New' => 'New',
'Used' => 'Used',
'Refurbished' => 'Refurbished'
),
至:
'options' => $myarrayfromtextfile,
其中 $myarrayfromtextfile 是一个变量或给我应该放在那里的代码的东西,但不是 10k 行代码。
也许可以更好地阐明:打印出的数组有方括号...我需要找到一种方法来打印出数组的代码结构(我不知道这是否是最好的表达方式)因为我获取一堆文本并尝试将其格式化为看起来像我经历并编写了数组的逗号分隔代码版本
array('foo' => 'foo' , 'bar' => 'bar' )
所以我需要一个变量,当将其放入另一个数组时,该变量会 compiled/converted 到物理代码结构,而不是最终浏览器呈现的带有长度计数和括号的数组...
或者我会采取任何其他关于如何使 10k 行文本最终看起来像
的想法 array('foo' => 'foo' , 'bar' => 'bar' )
无需逐行添加逗号 and => 和 ''
使用phpfile()
File — 将整个文件读入数组
<?php
$lines = file('test.txt'); ///path to your file
foreach ($lines as $line_num => $line)
{
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
?>
根据您的要求
<?php
$lines = file('test.txt'); ///path to you file
$arrayVar = "array(";
foreach ($lines as $line_num => $line)
{
$arrayVar.= "'".preg_replace( "/\r|\n/", "", $line)."' => '".preg_replace( "/\r|\n/", "", $line)."',";
}
$arrayVar = rtrim($arrayVar,',').');';
echo $arrayVar;
?>
我的 test.txt 文件中有这个
abc
cde
efg
hij
klm
上面的代码将在您的浏览器中为您提供这样的数组
array('abc' => 'abc','cde' => 'cde','efg' => 'efg','hij' => 'hij','klm' => 'klm');
这是你想要的吗? @HostandMore
$a = array();
$f = file('file.txt');
foreach ($f as $n => $l)
{
$a["Line {$n}"] = $l;
}
这应该可以解决问题。