1

私はこの2つの配列を持っています:

$arr1['product_detail'] = array(
    "26" => array("Blue", "Green"),
    "28" => array("S")
);
$arr2['variation'] = array(
    "pupc" => array("123456", "654321"),
    "pprice" => array(1, 2),
    "pqty" => array(10, 11)
);

位置に基づいた値を含む新しい配列を作成する必要がありますが、あまり言われません:

$arr3 = array(
    array("Blue", "S", "123456", 1, 10),
    array("Green", "S", "654321", 2, 11)
);

お気付きの場合は、両方の元の配列のすべての位置を混ぜ合わせています。私は次のように考えています:

foreach ($arr2 as $key => $value) {
    foreach ($value as $key1 => $value1) {
        foreach ($value1 as $key2 => $value2) {
            foreach ($arr1 as $key3 => $value3) {
                echo $key3;
            }
        }
    }
}

しかし、それは非常に醜いので、これを行うためのより良い方法があると思います。何か助けはありますか?

4

2 に答える 2

0
$arr1['product_detail'] = array(
    "26" => array("Blue", "Green"),
    "28" => array("S")
);
$arr2['variation'] = array(
    "pupc" => array("123456", "654321"),
    "pprice" => array(1, 2),
    "pqty" => array(10, 11)
);

function convert_array_index_name_to_number($arr)
{
    $temp_ar = array();
    foreach($arr as $key=>$val)
    {
        if(is_array($val))
        {
            $val = convert_array_index_name_to_number($val);
        }
        $temp_ar[] = $val;
    }
    return $temp_ar;
}

$arr1 = convert_array_index_name_to_number($arr1);
$arr2 = convert_array_index_name_to_number($arr2);

$arr3 = array();
for($i=0; $i<$count_of_variations; $i++)
{
    $temp_arr = array();
    $temp_arr[] = $arr1[0][0][$i];
    $temp_arr[] = $arr1[0][1][0];
    foreach($arr2[0] as $key => $value)
    {
        $temp_arr[] = $value[$i];
    }
    $arr3[] = $temp_arr;
}

結果

Array
(
    [0] => Array
        (
            [0] => Blue
            [1] => S
            [2] => 123456
            [3] => 1
            [4] => 10
        )

    [1] => Array
        (
            [0] => Green
            [1] => S
            [2] => 654321
            [3] => 2
            [4] => 11
        )

)
于 2013-09-24T20:55:43.453 に答える