1

我已经使用 PHP 很长时间了,但直到最近才真正使用回调。在下面的代码中,回调(示例是 QueryPath,如果您想知道,但它可以是任何接受回调的东西)将添加一些指向数组的链接:

// parse any product links out of the html
$aProducts = array();
qp( $html, 'a' )->each(function($index, $element){
    global $aProducts;

    $link = qp($element)->attr('href');

    $pregMatch = preg_match('@(.*)-p-(.*)\.html@i', $link, $matches);


   if( $pregMatch ) {
        $product_id = (int)$matches[2];

                if( !in_array($product_id, $aProducts) ) {
            $aProducts[] = $product_id;
        }
    }


});

    // print out our product array
    print_r( $aProducts );

使用的替代方法是什么global $aProducts(如果有的话)?

4

2 回答 2

4

使用use

qp( $html, 'a' )->each(function($index, $element) use(&$aProducts) {

注意&. 这是必需的,否则您将使用数组的副本。您也可以使用乘法值,只需将它们用 . 分隔即可,。例如:use(&$aProducts, $someObj, &$someInt)

PHP.net:http://www.php.net/manual/en/language.namespaces.importing.php _

于 2013-02-02T13:49:30.990 回答
0

我建议您不要使用全局变量,而是将您的代码放在一个类上并使用 $this 而不是全局变量。它必须工作

于 2013-02-02T13:51:06.300 回答