我正在使用php从文本文件中获取一些信息。 但我不能让我的阵列获取正确的信息。
这基本上是文本文件的内容:
FIRSTNAME=firstname
NAME=lastname
STREET=street adress
CITY=cityname
ZIP=zipcode
COUNTRY=country
ISOCOUNTRY=US
EMAIL=email@domene.com
MOBILENO=123456789
USERNO=somenumber
[PRODUCT]
QTY=2
ALPROJECTID=1123208
PRICE=134,00
DESCRIPTION=product1
ARTNO=1
[PRODUCT]
QTY=1
ALPROJECTID=1123208
PRICE=134,00
DESCRIPTION=product1
ARTNO=1
有没有办法将第二种产品作为2种产品输出?
这是我写的代码:
$articles = array();
//foreach( $articles as $article ){
$prodno = (int)$lines['ARTNO'];
$prodno = $artkobling[$prodno];
$articles['theproduct'][$prodno][$projectid] = array(
'prodno' => $prodno,
'quantity' => $lines['QTY'],
'product' => $lines['TYPE'],
'product' => $lines['TYPE'],
'referenceid' => $lines['ORDERID'],
'refid' => $lines['CUSTOMERID'],
'unitprice' => (int)$lines['PRICE']
);
$orderdata = array(
'userid' => $this->account,
'fullname' => $lines['FIRSTNAME'] . " " . $lines['NAME'] ,
'address' => $lines['STREET'],
'zipcode' => $lines['ZIP'],
'city' => $lines['CITY'],
'article' => $articles,
'comment' => $lines['CUSTOMERID'] . " " . $lines['ORDERID'] ,
);
当我调试它时,它按预期工作,并从一个产品获得结果。但是我怎么能得到2个产品的结果。我不确定我是否足够好解释这个问题。如果文件是JSON或XML而不是txt格式会更容易。
答案 0 :(得分:1)
我会使用parse_ini_string
将文本文件转换为数据结构。
//read the file contents
$raw = file_get_contents('/path/to/textfile.txt');
//replace [PRODUCT] with [PRODUCT_0], [PRODUCT_1]...
$raw = preg_replace_callback(
'/\[PRODUCT\]/',
function() {static $i=0; return '[PRODUCT_'.$i++.']';}
,$raw, -1, $count);
//parse raw string into an array
$data = parse_ini_string($raw,true);
//extract the products into their own array. This assumes that
//[PRODUCT] sections are always at the end of the file
$products = array_values(array_splice($data,$count*-1));
//Build the final array
$data = $data + ['PRODUCTS'=>$products];
这会将您的文本文件转换为$data
数组,该数组包含每个属性的键,以及键PRODUCTS
下各自的数组中的所有产品。
作为奖励,$count
是产品数量。从那里你可以用数据做你想做的事。