PHP私有数组的未定义索引

时间:2013-10-10 11:33:44

标签: php arrays pthreads private

我已经坚持了一段时间并且不确定问题。

也许有人可能会有一些很好的见解?

这是'代码':

class File extends Stackable{
    private $data;
    function set_data($array){
        foreach($array as $row => $data)
            foreach($data as $col => $val)
                $this->data[$row][$col]=$val;
                echo $this->data[$row][$col];                    
    } 

}

其中指出echo上有Undefined index : $col,其中$col通常是一封信。

可以假设

$row已设置。

也许我没有提供足够的细节,可能存在其他依赖关系,如果有,请告诉我。

有一点值得注意的是在这里使用php pthreads,虽然我不相信它是原因,因为错误仍然发生在1个帖子中。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在你的第二个foreach中 您必须将代码放在 {} 之间,如:

     foreach($data as $col => $val){
                    $this->data[$row][$col]=$val;
                    echo $this->data[$row][$col]; 

}
<{1>}中的

每个都没有,$ col和$ val没有定义。

答案 1 :(得分:0)

成员“数据”只是一个普通的数组,由于pthreads对象的工作方式,你的维度很小;你不想使用成员“数据”,没有必要:

<?php
class File extends Stackable {

    /* in pthreads you are responsible for the objects you create */
    /* so we accept an array by reference to store dimensions */

    public function set_data($array, &$files){
         foreach($array as $row => $data) {
            foreach($data as $col => $val) {
                 /* force this vector into existence */
                 if (!isset($this[$row])) {
                    $this[$row] = $files[] = new File();
                 }
                 $this[$row][$col]=$val;
            }
         }                  
    } 

    public function run() {}
}

$files = array();

$f = new File();
$f->set_data(array("test" => array($_SERVER)), $files);

var_dump($f);
?>

你应该记住,pthreads对象具有安全性的开销,所以尽可能少地遍历它们的成员,在理想的世界中,来到setData的$数组已经是合适的类型。