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 に答える