0

我已经坚持了一段时间,不确定问题所在。

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

这是“代码”:

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 个线程上。

预先感谢您的任何帮助。

4

2 回答 2

1

in your second foreach you must put the code between {} like :

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

}

in the echo $this->data[$row][$col]; is out of for each , $col and $val is not defined .

于 2013-10-10T12:19:48.830 回答
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 的 $array 已经是合适的类型......

于 2013-10-12T06:55:09.337 回答