我在从文件中爆炸数据时遇到了问题。 我的文件看起来像
04-21-1991 9:09 58 10004-21-1991 9:09 33 00904-21-1991 9:09 34 01304-21-1991 17:08 62 11904-21-1991 17:08 33 00704- 21-1991
我想像
那样从中爆炸数据04-21-1991 9:09 58 100
04-21-1991 9:09 33 009
04-21-1991 9:09 34 013
04-21-1991 17:08 62 119
04-21-1991 17:08 33 007
我到现在所做的是获得一个数组(数字不同,因为文件不同,但结构是相同的)
array(1) {
[0]=>
array(901) {
[0]=>
string(10) "07-21-1990"
[1]=>
string(5) "06:43"
[2]=>
string(2) "58"
[3]=>
string(14) "202
07-21-1990"
[4]=>
string(5) "07:03"
[5]=>
string(2) "33"
[6]=>
string(12) "4
07-21-1990"
这是我的代码
header("Content-type:text/plain");
$file = fopen("data/data-03", "r");
$result = array();
$file = explode(" ", file_get_contents("data/data-03"));
foreach ( $file as $content )
{
$result[] = array_filter(array_map("trim", explode(" ", $content)));
}
var_dump($result);
答案 0 :(得分:2)
您可能想尝试使用preg_match_all()
。像这样:
<?php
$string = "04-21-1991 9:09 58 10004-21-1991 9:09 33 00904-21-1991 9:09 34 01304-21-1991 17:08 62 11904-21-1991 17:08 33 00704-21-1991";
preg_match_all("/([\d]{2}-[\d]{2}-[\d]{4}\s[\d]*:[\d]{2}\s[\d]{2}\s[\d]{3})/", $string, $matches);
print_r($matches);
?>
上面的代码将输出:
Array ( [0] => 04-21-1991 9:09 58 100 [1] => 04-21-1991 9:09 33 009 [2] => 04-21-1991 9:09 34 013 [3] => 04-21-1991 17:08 62 119 [4] => 04-21-1991 17:08 33 007 )
答案 1 :(得分:0)
这是一个简单的代码,假设您的初始数据格式不会改变。
$str = "04-21-1991 9:09 58 100 04-21-1991 9:09 33 009 04-21-1991 9:09 34 013 04-21-1991 17:08 62 119 04-21-1991 17:08 33 007 04-21-1991";
$result = array();
$result = explode(" ",$str);
$row = 0;
for ($i = 0; $i < sizeof($result)-1; ){
$arr[$row]["date"] = $result[$i++];
$arr[$row]["hour"] = $result[$i++];
$arr[$row]["num"] = $result[$i++];
$arr[$row]["num2"] = $result[$i++];
$row++;
}
//check some data:
for ($i = 0; $i < 3; $i++ ){
echo $arr[$i]["date"] . " ";
echo $arr[$i]["hour"] . " ";
echo $arr[$i]["num"] . " ";
echo $arr[$i]["num2"] . " ";
echo "<br />";
}
答案 2 :(得分:0)
您还可以通过以下方式处理爆炸数组:
$out = array();
for ( $i=0; $i<count($result); $i++){
if ( floor($i / 4) == ($i / 4))
$out[ floor($i / 4) ] = $result[$i];
$out[ floor($i / 4) ] .= ' '.$result[$i];
}
你可以用你想要的分隔符替换'',我假设一个简单的空间。
基本上总是连接爆炸产生的数组的4个条目,并将它们添加到新数组中。你也可以在一个新的String中获取结果,只需在每个第四个条目之后以相同的方式添加\ n,如果这是你想要的。