0

この問題が発生しました。次のような多次元配列 ($varianti) があります。

Array
(
    [pa_taglia] => Array
        (
            [0] => l
            [1] => m
        )

    [pa_colore] => Array
        (
            [0] => blu
            [1] => giallo
            [2] => rosso
        )

)

必要なのは、サブ配列ごとに異なる配列を取得することなので、次の結果が必要です。

Array
(
    [0] => l
    [1] => m
)
Array
(
    [0] => blu
    [1] => giallo
    [2] => rosso
)

主な問題は、必要な数のサブ配列を取得できることです (これは、私の Woocommerce プラグインが属性から product_variations を作成するためのものです) ため、柔軟である必要があります。

これは私が思いついたコードです(2時間後...):

$keys = array_keys($varianti);//get the main keys

        //split multidimensional array in sub arrays
        foreach ($keys as $key=>$val){          
            $nr_var[$val]= count($varianti[$keys[$key]]);//create array such as array('key1'=> qty1, 'key2'=> qty2);
            $$val = $varianti[$keys[$key]];//create a variable variable from key
        }
        print_r($nr_var);
        foreach ($nr_var as $chiave=>$valore){
            print_r($$chiave);//retrieve values calling variable variable
        }

これが誰にとっても役立つことを願っています。

4

4 に答える 4

2

extractキー値に基づいて新しい変数を自動的に作成する関数を使用できます。

extract($varianti);
var_dump($pa_colore);
于 2016-08-03T10:17:06.380 に答える
1

extract()PHPの機能を利用できます。この関数は、配列を可変形式で抽出します。

これが入っていると考えてください$main_array

Array
(
    [pa_taglia] => Array
        (
            [0] => l
            [1] => m
        )

    [pa_colore] => Array
        (
            [0] => blu
            [1] => giallo
            [2] => rosso
        )

)

extract($main_array);

print_r($pa_taglia);
print_r($pa_colore);

詳細については、http://php.net/manual/en/function.extract.phpを参照してください。

于 2016-08-03T10:19:49.213 に答える
0

キーで取得して変数に格納するだけです。

$array1 = $varianti["pa_taglia"];
$array2 = $varianti["pa_colore"];

var_dump($array1);
var_dump($array2);
于 2016-08-03T10:50:28.250 に答える