我不知道标题是否与主题匹配。
我需要以下数组项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
)
)
)
)
)
中的每个“键”和“值”必须是以下“键”中的新数组。
答案 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;
}
}