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;
}
}