我已经坚持了一段时间并且不确定问题。
也许有人可能会有一些很好的见解?
这是'代码':
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个帖子中。
提前感谢您的帮助。
答案 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的$数组已经是合适的类型。