PHP将内容转换为单独的数组

时间:2018-01-28 07:51:51

标签: php arrays implode

我正在一个相当简单的网站上工作,您可以上传包含某种信息的文件,网站会分析这些数据,返回某些值,如平均值,条形图等。 梯子一切都很顺利,但我很难读取信息并将其转换为数组。 在这种情况下,我有一个日常温度为12月的.txt文件。 我需要将这些值放入单独的数组中,但每当我使用implode时,数组都会简单地拆分成行。这是var_dump;

 array(7) { 
[0]=> string(107) "0    1995    1996    1997    1998    1999    2000    2001    2002    2003    2004    2005    2006    2007    2008    2009    2010    2011    2012    2013    2014    2015 " 
[1]=> string(107) " 1   3.4 7.4 8.3 5.9 10.4    10.8    8.6 6.6 6.7 9.9 6.2 9.1 11  7   5.4 5.4 8.7 4   9.4 5.9 8.2 2   0.7 9.6 6.9 3.2 10.4" 
[2]=> string(107) " 9.3 6.5 4.1 7.8 7.2 5.7 0.3 8.6 4.5 2.6 6.6 8.6 8.2 9   7.2 10.4 3  1.6 10.9    0.9 4   10  7.1 10.7    2.1 7.4 4   7.7" 
[3]=> string(107) " -1.6    8.4 0.8 -0.3    8.9 5.6 6.5 9.5 8   10 4    -0.2    11.1    1.7 2.2 9.7 9.8 9.9 -0.2    9.6 6   8.8 1.5 5.5 1.4 -0.7    9." 
[4]=> string(107) "3    6.9 7   8.9 8.6 7.8 5   1.2 11.1    -0.1    6.8 8.5 9.2 7.8 0.1 8.9 9.5 8.5 -2.3    2.8 4.2 1   7.6 6.4 6.1 9   7.3 7.8 " 
[5]=> string(107) "6    7.2 9.6 1.1 4.8 4.8 6.4 6.1 3.7 6.7 7.8 9.7 2.2 1.7 3.8 1.8 7   5.8 6.7 8.8 8.5 5.4 7   1.6 9.9 6.6 3.4 5.2 " 
[6]=> string(107) "8.7  7.3 1.1 3.4 3.3 7.5 10  5   2.2 2.4 4.6 4.1 7.4 6.9 9.6 3.8 8   -1.6    7.9 9   3.1 5.2 9.6 6.3 1.2 3.1 1.6 7.5 " 
}

我需要跳过空格&当它们出现在那里以及每当有数字或浮点时,将它们放入相同的数组元素中。 例如,我们得到4.5 2.7 5,我需要4.5作为一个元素,然后2.7作为另一个元素,等等。 我尝试过使用上述条件的ifs,然而,它没有用。 我觉得我的语法很少,我还不熟悉或者可能是我忽略的一种功能。

这是我到目前为止所获得的干净代码;

<?php

$getcont = file_get_contents('C:\xampp\htdocs\gruodis.txt');
$contstr = str_split($getcont);

$a = 0;
$b = 0;
$c = 0;
$d = 0;
$sum = 0;
$contarr = array();

//fix the < values

for ($a = 0; $a < 7; $a++){
                for ($b = 0; $b < 107; $b++){
                    $contarr[$a][$b] = $contstr[$c];
                    $c++;                   
        }
        echo '<br>';
}
echo '<br><br>';

foreach ($contarr as $key => $value){
        $val = implode($value);
        $contarr[$key] = $val;
}

var_dump($contarr);

?>

这是我使用的内容; https://pastebin.com/QgNzm6G8

提前致谢!

1 个答案:

答案 0 :(得分:1)

下一个简单代码使用preg_splitarray_map函数将行拆分为数字数组:

$splitted = array_map(
    function($r) {
        return preg_split('/\s+/', $r);
    },
    $data
);

var_dump($splitted);

Test PHP code here