如何从其他数组获取多维数组

时间:2018-07-25 18:11:34

标签: php arrays multidimensional-array

我不知道标题是否与主题匹配。

我需要以下数组项use MyPackage; 中具有特定结构的新数组中的条目:

eigenschaften

我需要像这样的结构作为新数组:

Array
(
    [2635] => Array
    (
        [produkt_kombi_id] => 2635
        [sort_order] => 1
        [produkt_kombi_artikelnummer] => 2-0811-4LED
        [produkt_kombi_preis_typ] => fix
        [produkt_kombi_preis] => 50.0000
        [eigenschaften] => Array
            (
                [10] => 53
                [11] => 57
                [3] => 7
            )

    )

    [2641] => Array
    (
        [produkt_kombi_id] => 2641
        [sort_order] => 2
        [produkt_kombi_artikelnummer] => 2-0812-4LED
        [produkt_kombi_preis_typ] => fix
        [produkt_kombi_preis] => 50.0000
        [eigenschaften] => Array
            (
                [10] => 53
                [11] => 57
                [3] => 8
            )

    )

    [2647] => Array
    (
        [produkt_kombi_id] => 2647
        [sort_order] => 3
        [produkt_kombi_artikelnummer] => 2-0813-4LED
        [produkt_kombi_preis_typ] => fix
        [produkt_kombi_preis] => 50.0000
        [eigenschaften] => Array
            (
                [10] => 53
                [11] => 57
                [3] => 9
            )

    )
    [2712] => Array
    (
        [produkt_kombi_id] => 2712
        [sort_order] => 24
        [produkt_kombi_artikelnummer] => 2-0812
        [produkt_kombi_preis_typ] => fix
        [produkt_kombi_preis] => 0.0000
        [eigenschaften] => Array
            (
                [10] => 54
                [11] => 59
                [3] => 8
            )

    )

    [2713] => Array
    (
        [produkt_kombi_id] => 2713
        [sort_order] => 25
        [produkt_kombi_artikelnummer] => 2-0813
        [produkt_kombi_preis_typ] => fix
        [produkt_kombi_preis] => 0.0000
        [eigenschaften] => Array
            (
                [10] => 54
                [11] => 59
                [3] => 9
            )

    )

如果{key}不存在,则Array ( [10] => array ( [53]=> array ( [11] => array ( [57] => array ( [3] => 7 ) ) ), [54]=> array ( [11] => array ( [57] => array ( [3] => 7 ) ) ) ) ) 中的每个“键”和“值”必须是以下“键”中的新数组。

1 个答案:

答案 0 :(得分:0)

这有点有趣,所以我使用了How to access and manipulate multi-dimensional array by key names / path?中的解决方案:

function set($path, &$array=array(), $value=null) {
    $temp =& $array;

    foreach($path as $key) {
        $temp =& $temp[$key];
    }
    $temp = $value;
}

但是首先,我们需要将键和值放入路径数组中(可能是一种轻率的方式,但是首先要想到这一点):

foreach($array as $a) {
    $path = array();

    foreach($a['eigenschaften'] as $k => $v) {
        $path[] = $k;
        $path[] = $v;
    }
    $value = array_pop($path);
    set($path, $result, $value);
}

第一个函数将覆盖具有不同值的重复路径的值。要仅设置第一个,您需要检查它是否为null

function set($path, &$array=array(), $value=null) {
    $temp =& $array;

    foreach($path as $key) {
        $temp =& $temp[$key];
    }
    if($temp === null) {
        $temp = $value;
    }
}