我的.txt文件格式如下:
"id","dealer_id","vin","stockno",
"1","2","3","4",
"5","6","7","8",
"9","10","11",12"
我的目标是将其推入一个类似的关联数组:
"id"=>"1", "dealer_id"=>"2", "vin"=>"3", "stockno"=>"4"
我的问题是,数据循环每4个条目。在上面的例子中,我应该创建3个这样的数组:
"id"=>"1", "dealer_id"=>"2", "vin"=>"3", "stockno"=>"4"
"id"=>"5", "dealer_id"=>"6", "vin"=>"7", "stockno"=>"8"
"id"=>"9", "dealer_id"=>"10", "vin"=>"11", "stockno"=>"12"
如何在PHP中实现这一点 - 如果可能的话?
答案 0 :(得分:3)
这是一种方法:
<?php
$file = fopen('data.txt', 'r');
$headers = fgetcsv($file);
$result = array();
while ($row = fgetcsv($file)) {
if (!$row[0]) continue;
$nextItem = array();
for ($i = 0; $i < 4; ++$i) {
$nextItem[$headers[$i]] = $row[$i];
}
$result[] = $nextItem;
}
fclose($file);
var_dump($result);
这使用fgetcsv
来读取文件的每个分隔行。第一行用作标题名称。然后,对于每个其他行,我们创建一个新条目并将索引与标题名称匹配。我将它设置为4,因为你有一个尾随分隔符,在末尾创建一个空条目,如果你从输入中删除了那些,你可以使用$headers
的长度作为内循环。
以下是您的数据var_dump
的结果:
array(3) {
[0]=>
array(4) {
["id"]=>
string(1) "1"
["dealer_id"]=>
string(1) "2"
["vin"]=>
string(1) "3"
["stockno"]=>
string(1) "4"
}
[1]=>
array(4) {
["id"]=>
string(1) "5"
["dealer_id"]=>
string(1) "6"
["vin"]=>
string(1) "7"
["stockno"]=>
string(1) "8"
}
[2]=>
array(4) {
["id"]=>
string(1) "9"
["dealer_id"]=>
string(2) "10"
["vin"]=>
string(2) "11"
["stockno"]=>
string(3) "12""
}
}
答案 1 :(得分:0)
当然,这是可能的。
使用http://www.php.net并阅读以下功能
我将提供一个简短的例子:
$file = file_get_contents('myfile.txt');
$parts = str_replace('"', '', explode(',',$file);
然后执行foreach-loop或其他操作来添加数组中的键值对。
祝你好运答案 2 :(得分:0)
$getFileContents = file_get_contents("demo.txt");
$explodeBr = explode("\n", str_replace('"',"",$getFileContents));
$assocKeyStr = array_filter(explode(",", trim($explodeBr[0])));
$otherDetails = array_slice($explodeBr, 1, count($explodeBr));
$resultingArr = array();
foreach($otherDetails as $indDetailStr) {
$expDetail = array_filter(explode(",", trim($indDetailStr)));
$resultingArr[] = array_combine($assocKeyStr, $expDetail);
}
print_r($resultingArr);
使用的术语:
file_get_contents
在服务器内读取文件。
explode
通过划分给定的输入针形成一个数组,在您的情况下\n
和,
array_filter
回调,如果没有回传,默认情况下返回非空关联值。
array_slice
创建另一个数组有限且数量有限的数组。
count
获取数组的长度。
array_combine
期望两个参数具有相等长度的数组,第一个参数数组是键,第二个参数用于形成值。
答案 3 :(得分:-1)