从这个PHP数组访问信息?

时间:2012-10-10 21:08:50

标签: php arrays

我已经获取了变量的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>

这将回应:

BLUEANDLARGE345
345

我如何回应variation_data数组?

我尝试过以下操作,输出为'Array':

<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

代码似乎在之前和之后添加逗号,不需要示例。

蓝色,粉红色,黄色,e.t.c是[variation_data]数组。

2 个答案:

答案 0 :(得分:2)

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

print_r($product->variantion_data);

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

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

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

echo $product->variation_data['attribute_pa_size'];

答案 1 :(得分: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()