为了账号安全,请及时绑定邮箱和手机立即绑定

如何从关联数组中删除所有特定键 PHP

如何从关联数组中删除所有特定键 PHP

PHP
函数式编程 2022-09-17 15:52:39
我必须从如下关联数组中取消设置所有“优先级”键和值。还找不到解决此问题的方法。您认为从整个数组中删除特定键值对的最佳方法是什么?$countries = array(    'AE' => array(        'postcode' => array(          'required' => false,          'hidden'   => true,          'priority' => 40,        ),        'city' => array(            'priority' => 50,        ),    ),    'AF' => array(        'state' => array(            'priority' => 65,        ),    ),    'AO' => array(        'postcode' => array(            'required' => false,            'hidden'   => true,        ),        'state'    => array(            'label' => __( 'Province', 'woocommerce' ),            'priority' => 70,        ),    ),    // + another arrays);编辑我发现的解决方案:foreach( $countries as $country => $fields ) {    foreach( $fields as $field => $options ) {        if ( isset( $options['priority'] ) ) {            unset( $countries[$country][$field]['priority'] );        }    }}但我仍然想知道是否有其他更好的选择,编写更少的代码,可能是一些预定义的函数。
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

<?php

$countries = array(

    'AE' => array(

        'postcode' => array(

          'required' => false,

          'hidden'   => true,

        ),

        'state'    => array(

            'priority' => 50,

        ),

    ),

    'AF' => array(

        'state' => array(

            'priority' => 65,

        ),

    ),

    'AO' => array(

        'postcode' => array(

            'required' => false,

            'hidden'   => true,

        ),

        'state'    => array(

            'label' => ['Province', 'woocommerce'],

            'priority' => 70,

        ),

    ),

    // + another arrays

);


foreach($countries as &$country) {

    if(array_key_exists('state', $country)

        && array_key_exists('priority', $country['state'])) {

        unset($country['state']['priority']);

    }

}

var_dump($countries);


查看完整回答
反对 回复 2022-09-17
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

<?php

$countries = array(

    'AE' => array(

        'postcode' => array(

          'required' => false,

          'hidden'   => true,

        ),

        'state'    => array(

            'priority' => 50,

        ),

    ),

    'AF' => array(

        'state' => array(

            'priority' => 65,

        ),

    ),

    'AO' => array(

        'postcode' => array(

            'required' => false,

            'hidden'   => true,

        ),

        'state'    => array(

            'label' => ['Province', 'woocommerce'],

            'priority' => 70,

        ),

    ),

    // + another arrays

);


function unset_recursive(&$array, $key) {

    unset($array[$key]);

    foreach ($array as &$value) {

        if (is_array($value)) {

            unset_recursive($value, $key);

        }

    }

}


unset_recursive($countries, 'priority');

var_dump($countries);


查看完整回答
反对 回复 2022-09-17
?
开满天机

TA贡献1786条经验 获得超12个赞

请尝试一下,此代码可以搜索 2 的 deapth。


<?php

$countries = array(

    'AE' => array(

        'postcode' => array(

          'required' => false,

          'hidden'   => true,

        'priority' => 50,

        ),

        'state'    => array(

            'priority' => 50,

        ),

    ),

    'AF' => array(

        'state' => array(

            'priority' => 65,

        ),

    ),

    'AO' => array(

        'postcode' => array(

            'required' => false,

            'hidden'   => true,

        ),

        'state'    => array(

            'label' => ['Province', 'woocommerce'],

            'priority' => 70,

        ),

    ),

    // + another arrays

);


$lookKey = 'priority';

foreach($countries as $key => $country) {


    if(array_key_exists($lookKey, $country)){

        //echo "\n $key - $lookKey";

        unset($countries[$key][$lookKey]);

    }else{

        foreach($country as $subKey => $ar){    

            if(array_key_exists($lookKey, $ar)){

                //echo "\n $key - $subKey - $lookKey";

                unset($countries[$key][$subKey][$lookKey]);

            }

        }

    }



}


print_r($countries);

希望这对你有帮助。


查看完整回答
反对 回复 2022-09-17
  • 3 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信