2

このステートメントでfollow配列にアクセスできない理由を理解しようとしています。

var_dump($thevar[0]['product_id']);

Array
(
    [d142d425a5487967a914b6579428d64b] => Array
        (
            [product_id] => 253
            [variation_id] => 
            [variation] => 
            [quantity] => 1
            [data] => WC_Product Object
                (
                    [id] => 253
                    [product_custom_fields] => Array
                        (
                            [_edit_last] => Array
                                (
                                    [0] => 1
                                )

                            [_edit_lock] => Array
                                (
                                    [0] => 1345655854:1
                                )

                            [_thumbnail_id] => Array
                                (
                                    [0] => 102
                                )

ただし、動的に作成された配列名を使用して「product_id」にアクセスできます。

print_r($thevar['d142d425a5487967a914b6579428d64b']['product_id']);

問題は、その動的な名前がその場でどうなるかわからないということです...

4

3 に答える 3

2

このようなシナリオにはいくつかのオプションがあります。

アレイを手動で反復します

reset、、および/またはを使用してnext、配列を反復処理できます(おそらく部分的に)。keyeach

たとえば、キーに関係なく最初のアイテムを取得するには、次のようにします。

$item = reset($thevar);

配列のインデックスを再作成します

配列に数値でインデックスを付けることができると便利な場合があり、パフォーマンスへの小さな影響は問題になりません。その場合、次を使用してインデックスを再作成できますarray_values

$values = array_values($thevar);
$item = $values[0]; // because $values is numerically indexed

foreachで反復します

これは単一の値で機能するだけでなく、より多くの値でも機能しますが、コードの読者に間違った印象を与える可能性があります。

foreach($thevar as $item) {
    // do something with $item
}
于 2012-10-10T19:49:18.687 に答える
1

配列キーが動的である場合は、PHP関数array_keys()が役立つ場合があります。

配列で使用されているキーの配列を返します。次に、これを使用して、配列内の特定の要素にアクセスできます。

詳細については、こちらをご覧ください。

http://php.net/manual/en/function.array-keys.php

于 2012-10-10T19:47:03.937 に答える
0

PHP配列は関連性があるため、キーでアクセスする必要があります。

ただし、reset($thevar)最初のアイテムを取得するために使用できます。

またはarray_values()

array_values($thevar)[0]

または、やり過ぎだと感じた場合は、次のように要素をarray_keys()使用してアドレス指定することもできます。[0]

$thevar[ array_keys($thevar)[0]]
于 2012-10-10T19:43:37.070 に答える