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>

これはエコーします:

BLUEANDLARGE345
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()は、配列間の違いを表示することになっています。したがって、1 つの配列が単なる空の文字列である場合、このメソッドは空でないすべてのものを提供します。

空のデータにランダムなスペースがある場合、implode()は使用できません。

于 2012-10-10T21:10:34.330 に答える