Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从其他数组中获取多维数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

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

Php 如何从其他数组中获取多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我不知道标题是否与主题相符 我需要从以下数组项中提取特定结构中新数组中的条目: Array ( [2635] => Array ( [produkt_kombi_id] => 2635 [sort_order] => 1 [produkt_kombi_artikelnummer] => 2-0811-4LED [produkt_kombi_preis_typ] => fix

我不知道标题是否与主题相符

我需要从以下数组项中提取特定结构中新数组中的条目:

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
            )

    )
我需要这样的结构作为新阵列:

Array (
    [10] => array (
        [53]=> array (
            [11] => array (
                [57] => array (
                    [3] => 7
                )
            )
        ),
       [54]=> array (
            [11] => array (
                [57] => array (
                    [3] => 7
                )
            )
        )
    )
)

当“键”不存在时,
$array['eigenschaften']
中的每个“键”和“值”必须是以下“键”中的新数组。

这有点有趣,所以我使用了以下解决方案:

但首先我们需要将键和值放入path数组(可能是一种更巧妙的方法,但首先想到的是这一点):

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

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

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

54
在您提供的示例新数组中来自何处?忘记添加…我现在已编辑…现在是此数组中id为54的新值您确定示例新数组现在正确吗?请确保。是的,项目27122713是新的和正确的…这是一个样本形式,我的完整数组有不同的“键”和“值”,我将在选择中创建一个选择。。。。这是被选中的选项说下一个选项这将有谢谢你帮了我很多
foreach($array as $a) {
    $path = array();

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

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