如何取消嵌套 foreach 中的每个数组?
How to unset every array in nested foreach?
我有一个这样的多维数组输出:
Array
(
[0] => Array
(
[item] => null
[count] => 0
[child] => Array
(
[Dagadu Bocah] => Array
(
[item] => Dagadu Bocah
[count] => 47
[child] => Array
(
[HirukPikuk] => Array
(
[item] => HirukPikuk
[count] => 5
[child] => Array
(
[DGD] => Array
(
[item] => DGD
[count] => 1
[child] =>
)
)
)
在我的期望中,我可以在 foreach 循环中使用 unset
函数来删除具有 3 个键的每个数组,即 'item'、'count' 和 'child'以便它生成这样的数组:
Array
(
[0] => ([Dagadu Bocah] =>Array([HirukPikuk] =>Array([DGD])
)
这是我的代码,不符合我的期望:
public function conditionalPatternBase($a){
{
foreach($a as $key => $value){
foreach($value['child'] as $key1 => $value1){
if(is_array($value1['child'])){
foreach($value1['child'] as $value2){
unset($value2);
if(is_array($value2['child'])){
foreach($value2['child'] as $value3){
unset($value3);
if(is_array($value3['child'])){
foreach($value3['child'] as $value4){
unset($value4);
if(is_array($value4['child'])){
foreach($value4['child'] as $value5){
unset($value5);
}
}
}
}
}
}
}
}
}
}
}
}
有人可以帮忙吗?
对于您要使用的那种数据 recursion,像这样:
<?php
function getChildKey(array $data)
{
$result = [];
if (isset($data['child'])) {
foreach ($data['child'] as $key => $value) {
$result[$key] = getChildKey($value);
}
}
if (empty($result)) {
return '';
}
return $result;
}
$input = [
[
'item' => null,
'count' => 0,
'child' => [
'Dagadu Bocah' => [
'item' => 'Dagadu Bocah',
'count' => 47,
'child' => [
'HirukPikuk' => [
'item' => 'HirukPikuk',
'count' => 5,
'child' => [
'DGD' => [
'item' => 'DGD',
'count' => 1,
'child' => null,
],
],
],
],
],
],
],
];
$output = [];
print_r($input);
foreach ($input as $index => $child) {
$output[$index] = getChildKey($child);
}
print_r($output);
我有一个这样的多维数组输出:
Array
(
[0] => Array
(
[item] => null
[count] => 0
[child] => Array
(
[Dagadu Bocah] => Array
(
[item] => Dagadu Bocah
[count] => 47
[child] => Array
(
[HirukPikuk] => Array
(
[item] => HirukPikuk
[count] => 5
[child] => Array
(
[DGD] => Array
(
[item] => DGD
[count] => 1
[child] =>
)
)
)
在我的期望中,我可以在 foreach 循环中使用 unset
函数来删除具有 3 个键的每个数组,即 'item'、'count' 和 'child'以便它生成这样的数组:
Array
(
[0] => ([Dagadu Bocah] =>Array([HirukPikuk] =>Array([DGD])
)
这是我的代码,不符合我的期望:
public function conditionalPatternBase($a){
{
foreach($a as $key => $value){
foreach($value['child'] as $key1 => $value1){
if(is_array($value1['child'])){
foreach($value1['child'] as $value2){
unset($value2);
if(is_array($value2['child'])){
foreach($value2['child'] as $value3){
unset($value3);
if(is_array($value3['child'])){
foreach($value3['child'] as $value4){
unset($value4);
if(is_array($value4['child'])){
foreach($value4['child'] as $value5){
unset($value5);
}
}
}
}
}
}
}
}
}
}
}
}
有人可以帮忙吗?
对于您要使用的那种数据 recursion,像这样:
<?php
function getChildKey(array $data)
{
$result = [];
if (isset($data['child'])) {
foreach ($data['child'] as $key => $value) {
$result[$key] = getChildKey($value);
}
}
if (empty($result)) {
return '';
}
return $result;
}
$input = [
[
'item' => null,
'count' => 0,
'child' => [
'Dagadu Bocah' => [
'item' => 'Dagadu Bocah',
'count' => 47,
'child' => [
'HirukPikuk' => [
'item' => 'HirukPikuk',
'count' => 5,
'child' => [
'DGD' => [
'item' => 'DGD',
'count' => 1,
'child' => null,
],
],
],
],
],
],
],
];
$output = [];
print_r($input);
foreach ($input as $index => $child) {
$output[$index] = getChildKey($child);
}
print_r($output);