阅读文本并分隔行' a'分成一个阵列和一行' b'到另一个数组

时间:2014-10-31 09:42:47

标签: arrays text

这就是文字的样子

a 9 1 2 2
a 10 3 10 5
b 16.98 15.15 13.10
b 0.71 13.57 7.84
a 2 6 10 10
a 10 10 5 8
a 7 10 9 10
b 13.11 18.67 14.86

我知道我应该使用fgetl,但我似乎无法掌握它 这就是我想要的

a=[9 1 2 2, 10 3 10 5, 2 6 10 10, 10 10 5 8, 7 10 9 10]
b=[16.98 15.15 13.10,0.71 13.57 7.84, 13.11 18.67 14.86] 

提前非常感谢!

2 个答案:

答案 0 :(得分:1)

这是我如何在php中解决你的问题

   $v = "a 9 1 2 2 a 10 3 10 5 b 16.98 15.15 13.10 b 0.71 13.57 7.84 a 2 6 10 10 a 10 10 5 8 a 7 10 9 10 b 13.11 18.67 14.86";
    $arary = explode(' ', $v);
    $myVal = array();
    $key = $arary[0];
    $oldKey = $key;
    for($i=0;$i<count($arary);$i++)
    {
        if(is_numeric($arary[$i])){
            if($oldKey == $key){
            $myVal[$key] .=  $arary[$i].' ';
            }else{
                $myVal[$key] .=  $arary[$i].', ';
            }
        }elseif ($key != $arary[$i])
        {
            $oldKey = $key;
            $key = $arary[$i];
        }
    }
    echo '<pre>';
    print_r($myVal);
    echo '</pre>';

输出

Array
(
    [a] => 9 1 2 2 10 3 10 5 2, 6, 10, 10, 10, 10, 5, 8, 7, 10, 9, 10, 
    [b] => 16.98, 15.15, 13.10, 0.71, 13.57, 7.84, 13.11, 18.67, 14.86, 
)

答案 1 :(得分:0)

您可以这样做:

$fp = fopen('file.txt','r');
$result = array();
while($line = fread($fp, 1024) != false) {
    $line = explode(" ", $line);
    $key = array_shift($line);
    if(!isset($result[$key]) {
        $result[$key] = array();
    }
    foreach($line as $value) {
        $result[$key][] = $value;
    }
}
fclose($fp);
var_dump($result);