如何从多维关联数组中删除键?

问题描述

我有一个关联数组,其格式如下:

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',))))

我想从阵列中删除键。 为此,我正在使用:

array_values($my_data)

但是,这仅适用于数组的最高级别,在这种情况下为“购物和时尚”。它将其转换为索引0。 我也该如何对索引内的每个数组执行相同的操作?

期望的输出

array (
    0 =>
        array (
            'childData' =>
                array (
                    0 =>
                        array (
                            'childData' =>
                                array (
                                    0 =>
                                        array (
                                            'id' => '6002839660079',1 =>
                                        array (
                                            'id' => '6003025268985','name' => 'Beauty','id' => '6002867432822','parentName' => 'Shopping and fashion',)))

我在父级数组中有很多不同的数组,并且在它们内部还有更多的数组,因此,由于“ childData”的数量,每个数组的使用都会造成问题,即父数组中的子数组在变化。

可以递归吗?

解决方法

我不知道内置功能,但是也许这个功能可以帮助您?

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