只有最后一项保留在数组推送循环中

时间:2017-07-28 10:26:53

标签: php arrays wordpress woocommerce

我正在使用Wordpress中的Woocommerce开展一个项目。我尝试获取特定类别的所有产品,将它们保存在一个数组中,然后用它们做我的事情。但是,即使循环工作并打印所有项目,当我在数组上推送数据时,它只保留最后一个。

  <ListView
        android:id="@+id/left_drawer"
        android:layout_width="235dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#ffffff"
        android:choiceMode="singleChoice"
        android:divider="#d2d1d1"
        android:listSelector="@drawable/list_selector_drawer"
        android:dividerHeight="1dp"/>

正如你所看到的,我选择的是这个:

$args = array( 'post_type' => 'product', 'posts_per_page' => 100, 'product_cat' => 'additional-number' );
$loop = new WP_Query( $args );

echo '<select class="form-control">';
echo '<option>Select a country</option>';
while ( $loop->have_posts() ) : $loop->the_post();
    global $product; 
    $countries = array(); 
    $countries[] = $product->id;
    echo '<option value="' . $product->id . '">' . $product->post->post_title . '</option>';
endwhile; 
echo '</select>';
wp_reset_query(); 
print_r($countries);

但是<select class="form-control"> <option>Select a country</option> <option value="7818">England</option> <option value="7814">Germany</option> </select> 的输出就是这个:

print_r

知道我做错了吗?

2 个答案:

答案 0 :(得分:3)

请添加$ countries = array();在while循环之前

<?php
$args = array( 'post_type' => 'product', 'posts_per_page' => 100, 'product_cat' => 'additional-number' );
$loop = new WP_Query( $args );
$countries = array(); 
echo '<select class="form-control">';
echo '<option>Select a country</option>';
while ( $loop->have_posts() ) : $loop->the_post();
    global $product; 
    $countries[] = $product->id;
    echo '<option value="' . $product->id . '">' . $product->post->post_title . '</option>';
endwhile; 
echo '</select>';
wp_reset_query(); 
print_r($countries);
?>

答案 1 :(得分:2)

您正在初始化循环中的数组变量,以便在每次迭代中创建一个新的空数组。

$countries = array();

while循环之前属于