在foreach期间将对象存储在数组中?

时间:2012-08-18 05:59:56

标签: php cakephp

我希望在foreach循环期间将一些对象存储在数组中。问题是每次都创建一个唯一的对象。我必须有一些索引附加每个对象的名称。这就是我所拥有的:

function table_rows($html) {
        $dom = new Zend_Dom_Query($html);
        $table_rows = $dom->query('tr');
        $check_array = array();
        foreach ($table_rows as $key=>$table_row) {
            ($check_object . $key) = new check_class;
            ($check_object . $key)->check_method1($table_row);
            ($check_object . $key)->check_method2($table_row);
            ($check_object . $key)->check_method3($table_row);
            $check_array[] = (check_object . $key);
        }
    }

我甚至关闭了吗?

3 个答案:

答案 0 :(得分:2)

您可以使用variables

function table_rows($html) {
    $dom = new Zend_Dom_Query($html);
    $table_rows = $dom->query('tr');
    $check_array = array();
    foreach ($table_rows as $key=>$table_row) {
        $object = new check_class;
        $object->check_method1($table_row);
        $object->check_method2($table_row);
        $object->check_method3($table_row);
        $check_array[] = $object;
    }
}

当然,为对象实例$object命名变量并不是很具描述性,但我希望你明白这一点。

这是有效的,因为for - 循环中的第一个赋值会覆盖" old"实例,因此$object每次迭代都是唯一的。

答案 1 :(得分:1)

如果Jared Drake是对的,你的意思是唯一的数组键,而不是对象(变量)名称。

 $dom = new Zend_Dom_Query($html);
 $table_rows = $dom->query('tr');
 $check_array = array();
 foreach ($table_rows as $key=>$table_row) {
        $check_object = new check_class;
        $check_object->check_method1($table_row);
        $check_object->check_method2($table_row);
        $check_object->check_method3($table_row);
        $check_array['check_object' . $key] = $check_object;
    }
}

答案 2 :(得分:0)

也许我误解了这个问题,但你不能只使用array_push方法将每个对象添加到foreach循环中数组的末尾吗?