PHP - 在函数内创建多维数组

时间:2013-07-23 08:54:18

标签: php arrays function return

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

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.

在功能之外。

先谢谢

1 个答案:

答案 0 :(得分: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来自哪里?