【发布时间】:2017-10-19 10:41:48
【问题描述】:
我的代码:
<?php
$file="./Speed10.txt";
$document=file_get_contents($file);
$rows = explode ('(', $document);
$a[$r][$c];
for($r=0; $r<9103; $r++){ //1903 rows in text file
$a[$r][$c]; // Array declared here - doesnt solve problem
for($c=0; $c<103; $c++){
//$a[$r][$c] = rand();
// print_r($a[$r][$c]);
}
}
foreach ($rows as $ri => $row) {
$a[$ri][$c] = explode (';', $row);
//XXXXXXXXXXXXX
}
print_r($a[1][$c]); // NOT PRINTING*
?>
如上所示,我有一个二维数组,它将文本文件分成行和列。 那部分工作得很好,但我尝试打印出一行的所有单元格,它没有打印。
但是,如果我将 print_r 行移动到 X 所在的位置,它就可以工作(尽管它是在循环中打印出来的)。对我来说听起来像是一个范围问题,但我不知道是什么。我尝试将数组初始化为全局变量,但这并没有解决它。
【问题讨论】:
-
为什么不
$a = [];或$arrayContents = array();- 我看不出你的$r和$c变量在哪里设置,但在 PHP 中,你可以像我描述的那样初始化一个数组.你不需要说它有多大。 -
这里没有范围问题,因为
for和foreach没有添加它自己的范围。$c和$r声明在哪里(在第一个$a[$r][$c]中?你还说该文件有1903行,但你循环9103次。为什么不$r < count($rows)? -
同样在你的最后一个
foreach()循环中,试试这样:foreach ($rows as $rowIndex => $rowData) { echo '<pre>' . print_r($rowIndex, 1) . ' => ' . print_r($rowData, 1) . '</pre>'; }你将能够看到每个元素。初始化$c和$r的值,并为您的变量和对象名称赋予更有意义的名称。$c我假设意思是“列”,但它可能意味着任何东西。 -
@ShaunBebbers 这就是我最初所做的,但我认为这可能是问题所以我改为 $a[$r][$c],根本不影响代码。如果我这样做 $a=[ ];我将在哪里初始化 $r/$c 或者它们必须在哪里?
-
@DanielRegan - 但变量
$r和$c在未声明数组之前未声明。所以它什么也没做。这是一个可能会混淆问题的非工作 PHP 脚本行。$a = array();- 至少 PHP 开发人员知道您想要实现什么,将名为$a的资源设置为 PHP 数组,稍后在脚本中将包含零个或多个元素。
标签: php html arrays multidimensional-array scope