如何从多维关联数组中删除键?
How to remove the keys from a multi-dimensional associative array?
我有一个具有以下格式的关联数组:
array (
'Shopping and fashion' =>
array (
'childData' =>
array (
'Beauty' =>
array (
'childData' =>
array (
'Cosmetics' =>
array (
'id' => '6002839660079',
'name' => 'Cosmetics',
'parentName' => 'Beauty',
),
'Tattoos' =>
array (
'id' => '6003025268985',
'name' => 'Tattoos',
'parentName' => 'Beauty',
),),))))
我想从数组中删除键。
为此,我正在使用:
array_values($my_data)
但是,这仅适用于数组的最顶层,在本例中为“购物和时尚”。它将其转换为索引 0。
我怎样才能对索引中的每个数组也做同样的事情?
预期输出:
array (
0 =>
array (
'childData' =>
array (
0 =>
array (
'childData' =>
array (
0 =>
array (
'id' => '6002839660079',
'name' => 'Cosmetics',
'parentName' => 'Beauty',
),
1 =>
array (
'id' => '6003025268985',
'name' => 'Tattoos',
'parentName' => 'Beauty',
),
),
'name' => 'Beauty',
'id' => '6002867432822',
'parentName' => 'Shopping and fashion',
),)))
我的数组在父级上有许多不同的数组,在它们内部有更多的数组,所以使用 for each 会带来问题,因为“childData”的数量,即父数组内的子数组是变化的。
可以递归吗?
我不知道 built-in 函数,但也许这个函数对你有帮助?
function array_values_recursive( $array ) {
$newArray = [];
foreach ( $array as $key => $value ) {
if ( is_array( $value ) ) {
$newArray[] = array_values_recursive( $value );
} else {
$newArray[$key] = $value;
}
}
return $newArray;
}
我有一个具有以下格式的关联数组:
array (
'Shopping and fashion' =>
array (
'childData' =>
array (
'Beauty' =>
array (
'childData' =>
array (
'Cosmetics' =>
array (
'id' => '6002839660079',
'name' => 'Cosmetics',
'parentName' => 'Beauty',
),
'Tattoos' =>
array (
'id' => '6003025268985',
'name' => 'Tattoos',
'parentName' => 'Beauty',
),),))))
我想从数组中删除键。 为此,我正在使用:
array_values($my_data)
但是,这仅适用于数组的最顶层,在本例中为“购物和时尚”。它将其转换为索引 0。 我怎样才能对索引中的每个数组也做同样的事情?
预期输出:
array (
0 =>
array (
'childData' =>
array (
0 =>
array (
'childData' =>
array (
0 =>
array (
'id' => '6002839660079',
'name' => 'Cosmetics',
'parentName' => 'Beauty',
),
1 =>
array (
'id' => '6003025268985',
'name' => 'Tattoos',
'parentName' => 'Beauty',
),
),
'name' => 'Beauty',
'id' => '6002867432822',
'parentName' => 'Shopping and fashion',
),)))
我的数组在父级上有许多不同的数组,在它们内部有更多的数组,所以使用 for each 会带来问题,因为“childData”的数量,即父数组内的子数组是变化的。
可以递归吗?
我不知道 built-in 函数,但也许这个函数对你有帮助?
function array_values_recursive( $array ) {
$newArray = [];
foreach ( $array as $key => $value ) {
if ( is_array( $value ) ) {
$newArray[] = array_values_recursive( $value );
} else {
$newArray[$key] = $value;
}
}
return $newArray;
}