0

我已经获取了变量的 print_r 并希望从中访问一些信息,这是 print_r 的预览,

WC_Product_Variation Object
(
    [variation_data] => Array
        (
            [attribute_pa_colour] => blue
            [attribute_pa_size] => large
        )
    [sku] => BLUEANDLARGE345
    [stock] => 345
)

因此,如果我使用以下代码:

<td><?php echo $product->sku; ?></td>
<td><?php echo $product->stock; ?></td>

这将回显:

蓝大
345 345

我怎样才能回显variation_data数组?

我尝试了以下方法,输出为“数组”:

<td><?php echo $product->variation_data; ?></td>

编辑:

@pp19dd

所以我尝试了以下方法:

<td><?php echo implode(", ", $product->variation_data ); ?></td>

现在输出是:

blue,         Test Product    Test Product    123
, pink        Test Product    Test Product    456
yellow,       Test Product    Test Product    789
blue, large   Test Product    Test Product    345

该代码似乎在前后放置了一个逗号,这在示例中是不需要的。

蓝色、粉色、黄色等是[variation_data]阵列。

4

2 回答 2

2

如果要回显数组的结构,可以再次使用 print_r:

print_r($product->variantion_data);

如果要回显数组的各个元素:

foreach($product->variantion_data as $value)
    echo $value;

或者,如果您想按键访问元素:

echo $product->variation_data['attribute_pa_size'];
于 2012-10-10T21:11:41.600 回答
0

<td><?php echo implode(", ", $product->variation_data ); ?></td>

编辑:如果您需要粒度位,您可以直接定位它们:

<td><?php echo $product->variation_data['attribute_pa_colour']; ?></td>

编辑#2:由于数据可能为空,您需要将其过滤掉。一种快速而肮脏的方法:

<?php echo implode(", ", array_diff( $product->variation_data, array("") ) ) ?>

技巧:array_diff()应该显示数组之间的差异。因此,如果一个数组只是一个空字符串,则此方法将为您提供所有非空的内容。

如果空数据中有随机空格,则不能使用implode()

于 2012-10-10T21:10:34.330 回答