初始化后无法访问PHP类值

时间:2016-08-06 18:02:15

标签: php

我正在尝试将下面表单中的输入文件转换为一系列可以操作的对象。

arabian_sea_area = {
    1926 1927 1931 1932 1933 2029 2030 
}

gulf_of_aden_sea_area = {
    1925 2024 5285 5286 
}

SDF

<?php

$all_areas = array();
if (($handle = fopen("area.txt", "r")) == False)
{
   die("failed to open file\n");
}

while (($line = fgets($handle)) !== FALSE)
{
    if (ctype_alpha($line[0]))
    {
        $line= explode(" ",$line);
       // echo($line[0]."\n");

        $area = $line[0]; 
        $IDs = explode(" ", fgets($handle));
        $IDs[0] = ltrim($IDs[0], '  '); // trying to remove tab from first ID
        $all_areas[$area] = $IDs;
        //array_push($all_areas, $temp);
    }
}
//echo("a\n");
print_r($all_areas["arabian_sea_area"]);
//var_dump ($all_areas);

?>

值在注释掉的调试行中正确打印,但最后无法为var_dump打印任何内容。

编辑:我意识到这一点还不清楚,我试图做的是创建一个主“all_areas”数组,该数组链接到标题为第一行的对象(即.arabian_sea_area等)然后我可以得到数字ID为每个区域在算法上用于以后的脚本。

1 个答案:

答案 0 :(得分:2)

您的代码存在许多问题:

1 -

if (ctype_alpha($line[0]))
{
    $line= explode(" ",$line);
    //echo($line[0]."\n");

    $temp = $line[0]; 
    $temp = new Area;
    $temp->filler($line, $handle);
}

你正在创建一个$ temp变量,但你忘了把它推到你的主阵列$ all_areas。使用array_push

2-

var_dump ($arabian_sea_area);

$ arabian_sea_area不存在。 你的意思是打印你的主阵列$ all_areas?

3-建议:

出错(echo(&#34;无法打开文件\ n&#34;);)建议使用die(&#34;无法打开文件\ n&#34;);而不是回声。因为die会阻止脚本的其余部分执行。

- 更新 -

我以一种应该正常工作的方式编辑了你的代码:

   class Area  {
    public $area_name;
    public $IDs = array();

    public function filler($line, $handle) {
        $this->area_name = $line[0];
        //echo($this->area_name."\n");

        $this->IDs = explode(" ", fgets($handle));
        //print_r($this->IDs);
    }
}
$all_areas = array();
if (($handle = fopen("area.txt", "r")) == False)
{
   die("failed to open file\n");
}

while (($line = fgets($handle)) !== FALSE)
{
    if (ctype_alpha($line[0]))
    {
        $line= explode(" ",$line);
       // echo($line[0]."\n");

        $temp = $line[0]; 
        $temp = new Area;
        $temp->filler($line, $handle);

        array_push($all_areas, $temp);
    }
}
//echo("a\n");
var_dump ($all_areas);

您可能想要更新它以删除/过滤空值。

相关问题