0

我想在函数内部创建多维数组,然后在函数外部访问它。现在我有这个功能:

function custom_shop_array_create($product, $counter){
    $product_id = get_the_ID();
    $product_title = get_the_title($product_id);
    $products_arr[]['id'] = $product_id;
    $products_arr[]['title'] = $product_title;
    $products_arr[]['price'] = $product->get_price();
    $products_arr[]['image'] = get_the_post_thumbnail($product_id, 'product-list-thumb', array('class' => 'product-thumbnail', 'title' => $product_title));
    return $products_arr;
}

它在这段代码中被调用:

$products_arr = array();
    if ( $products->have_posts() ) : while ( $products->have_posts() ) : $products->the_post();
        custom_shop_array_create($product);
    endwhile;
    endif;

问题是我无法访问$products_arr。我尝试过替换custom_shop_array_create($product);$my_array[] = custom_shop_array_create($product);但后来我得到了 3 维数组。那么有没有办法获得如下所示的二维数组:

product 1 (id,title,price,image)
product 2 (id,title,price,image) etc.

函数之外。

谢谢转发

4

1 回答 1

1

当然。使您的函数返回最终数组的一行并自己进行附加:

function custom_shop_array_create($product, $counter){
    $product_id = get_the_ID();
    $product_title = get_the_title($product_id);
    return [
        'id' => $product_id,
        'title' => $product_title,
        // etc
    ];
}

接着:

$products_arr = array();
if ( $products->have_posts() ) :
    while ( $products->have_posts() ) : 
        $products->the_post();
        $products_arr[] = custom_shop_array_create($product);
    endwhile;
endif;

也就是说,while循环中正在发生一些奇怪的事情。做什么$products->the_post()$product来自哪里?

于 2013-07-23T08:57:04.103 回答