我有一个看起来像这样的数组: http://pastebin.com/raw/myuRm6cs
我想将此数组转换为一个级别并添加路径键,例如:
Array
(
[0] => Array
(
[path] => Niebieski|S|Bawelna
[price] =>
[warehouse] =>
[send] => dst
)
[1] => Array
(
[path] => Niebieski|S|Poliester
[price] =>
[warehouse] =>
[send] => dst
)
[2] => Array
(
[path] => Niebieski|S|Skora
[price] =>
[warehouse] =>
[send] => dst
)
-
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($types));
$results = array();
foreach ($ritit as $leafValue) {
$path = array();
foreach (range(0, $ritit->getDepth()) as $depth) {
$path[] = $ritit->getSubIterator($depth)->key();
}
$results[] = join('|', $path);
}
此代码创建数组的路径,但我不知道如何使用它们来获得效果。
答案 0 :(得分:0)
没有ArrayIterator,它非常容易
$results = array();
foreach ($types as $k1=>$v1)
foreach ($v1 as $k2=>$v2)
foreach ($v2 as $k3=>$v3)
$results[] = array('parh' => $k1 . '|' . $k2 . '|' . $k3) + $v3;
print_r($results);
答案 1 :(得分:0)
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($a));
$results = array();
foreach ($ritit as $key => $leafValue) {
$path = array();
foreach (range(0, $ritit->getDepth()-1) as $depth) {
$path[] = $ritit->getSubIterator($depth)->key();
$b = $ritit->getSubIterator($depth)->current();
}
$b['path'] = join('|', $path);
$results[] = $b;
}
print_r($results);
但是有一个错误