我正在寻找一种方法将文件读入数组并获得我想要的东西。
这是我用来将文件读入数组的代码
$Path = 'dewp/pix/info.txt';
$productsArray = file($dirPath, FILE_IGNORE_NEW_LINES);
foreach ($productsArray as $key => &$product) {
$arr = explode("\t", $product);
$product =array('album=' => $arr[0], 'singer=' => $arr[1], 'info=' => $arr[2]);
}
echo "$product['album']";
我的txt文件包含:
album= Prisoner
singer= Jackobson
info= Love song about GOD , so so so so .
但什么都没发生,我无法获得专辑 - 歌手或信息字符串!
我需要爆炸像album =这样的特殊字符串来找出值!
答案 0 :(得分:4)
该数据看起来像.ini
个文件,为什么不尝试使用parse_ini_file()
,例如
<?php
$Path = 'dewp/pix/info.txt';
$product = parse_ini_file($path);
echo $product['album'];
如果您有多个产品,则可以使用
这样的文件[some_product]
artist=Foo
singer=Bar
info=Lorem ipsum bla bla
[other_product]
artist=Foobar
singer=The Dude
info=Dolor sit amet bla bla bla
并做
<?php
$Path = 'dewp/pix/info.txt';
$products = parse_ini_file($path, true);
echo $products['some_product']['album'];
此外,在您的代码中,您设置变量$Path
,然后在下一行使用$dirPath
。它会覆盖循环中每一行的$product
变量。
答案 1 :(得分:2)
这是因为你文件中的每一行都是数组中的一个元素,file()
函数不会创建任何键,你必须用'='字符串拆分每个元素以获得两个元素的数组(一把钥匙和一个变量。)
$path = 'dewp/pix/info.txt';
$lines = file($path, FILE_IGNORE_NEW_LINES);
$product = array();
foreach ($lines as $line) {
$arr = explode("= ", $line);
$product[$arr[0]] = $arr[1];
}
echo "{$product['album']}";
注意: FILE_IGNORE_NEW_LINES
标志只删除每个数组元素末尾的'\ n'。