删除多维数组中的键

时间:2017-09-27 10:00:37

标签: php arrays multidimensional-array

我想删除键[价格],但我用于删除的功能对于这种情况不起作用

我有:

Array(
       [Values] => 1
       [Product] => Array( 
                           [Details] => Array( 
                                              [ID] => 1
                                              [Price] => Array(
                                                              )
                                             )
                         )
    )

我的目标是:

Array(
       [Values] => 1
       [Product] => Array( 
                           [Details] => Array( 
                                              [ID] => 1
                                             )
                         )
    )

我用它来删除:

function remove_key($array, $key)
        {
            foreach($array as $k => $v) {

                if(is_array($v)) {
                    $array[$k] = remove_key($v, $key);
                } elseif($k == $key) {
                    unset($array[$k]);
                }
            }
            return $array;
        }

$array = remove_key($array,'Price');

这里有什么问题?

2 个答案:

答案 0 :(得分:0)

<?php
$array = Array(
    'Values' => 1,
 'Product' => Array(
    'Details' => Array(
        'id' => 1,
        'Price' => Array(
)
      )
   )
);



unset($array['Product']['Details']['Price']);
echo "<pre>";
print_r($array);
echo "</pre>";

输出是:

Array
(
    [Values] => 1
    [Product] => Array
        (
            [Details] => Array
                (
                    [id] => 1
                )

        )

)

答案 1 :(得分:0)

因此,如果你想修复你的功能,你必须在第一个if中添加另一个条件&& $k != $key 因为您没有进入elseifunset未被称为

  function remove_key($array, $key)
        {
            foreach($array as $k => $v) {
                if(is_array($v) && $k != $key) {
                    $array[$k] = remove_key($v, $key);
                } elseif($k == $key) {
                    unset($array[$k]);
                }
            }
            return $array;
        }