[英]Converting 1D array to 2D array PHP
我目前有一个文本文件,如下所示:
0000001
0000002
0000003
0000004
0000005
0000006....
我正在使用下面的代码将一维数组转换为二维。
$filename = "surface.txt";
$fp = fopen($filename, "r");
while(!feof($fp)) {
$content = fread($fp, filesize($filename));
$lines = explode("\n", $content);
for ($i=0; $i<=$row; $i++){
for ($j =0; $j<=$col; $j++){
//echo $lines[$i*$col + $j];
$matrix[$i][$j] = $lines[$i*$col + $j];
//var_dump($matrix[i][j]);
}
}
}
fclose($fp);
我的输出数组$ matrix打印所有NULL值。我将var_dump()放入循环中以查看其显示内容。有趣的是,它正在读取所有值,但是在最后一个值之后,它也继续读取空值,从而使$ matrix最后变为空(NULL)。 我不知道如何解决这个问题。 如果我不清楚解释输出的方式,请在下面查看。
Array ( [0] => Array ( [0] => 0000001 ) )
Array ( [0] => Array ( [0] => 0000002 [1] => 0000002 ) )
Array ( [0] => Array ( [0] => 0000001 [1] => 0000002 [2] => 0000003 ) )
在最后几行中,我看到输出如下
Array ( [0] => Array ( [0] => [1] => [2] => [3] => ) [1] => Array ( [0] => [1] => [2] => [3] => ) [2] => Array ( [0] => [1] => [2] => [3] => ) [3] => Array ( [0] => [1] => [2] => [3] => ) [4] => Array ( [0] => [1] => [2] => [3] => ) [5] => Array ( [0] => [1] => [2] => [3] => ) [6] => Array ( [0] => [1] => [2] => [3] => ) )
任何帮助都将受到高度赞赏。
<?php
//asuming $row and $col are defined
//$row=5;
//$col=5;
$filename = "surface.txt";
$content = file_get_contents($filename);
$lines=explode("\n",$content);
foreach ($lines as $rowNum=>$r)
{
$r=str_split($r);
if ($rowNum+1>$row)
break;
if ($r===[""])
continue;
while (count($r)>$col)
{
array_pop($r);
}
$matrix[]=$r;
}
var_dump($matrix);
这就是我的工作方式
$filename="surface.txt"
$fp = fopen($filename, "r");
$content = fread($fp, filesize($filename));
$lines = explode("\n", $content);
for ($i=0; $i<$row; $i++){
for ($j =0; $j<$col; $j++){
$matrix[$i][$j] = $lines[$i*$col + $j];
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.