代码之家  ›  专栏  ›  技术社区  ›  H. Ferrence

如何在PHP中初始化多维数组预设键

  •  0
  • H. Ferrence  · 技术社区  · 7 年前

    我有一个常数定义为:

    define('CONFIG_CODES', 'v1,v2,v3');
    

    我想使用常量中定义的配置代码作为数组键来初始化多维数组。我试过了 array_fill_keys() 还有其他各种方法,我无法初始化数组。我想要初始化的原因是为了避免 Undefined index: v2 Undefined offset: 0 在我的PHP脚本结果中。

    下面是我希望初始化的样子:

    Array
    (
        [v1] => Array
            (
                [0] => 
                [1] => 
            )
    
        [v2] => Array
            (
                [0] => 
                [1] => 
            )
    
        [v3] => Array
            (
                [0] => 
                [1] => 
            )
    
    )
    

    我的尝试:

    $serviceTimes = array_fill_keys( array( CONFIG_CODES ), '' );

    2 回复  |  直到 7 年前
        1
  •  2
  •   whitwhoa    7 年前

    创建空的 $initialized 数组,然后使用分解的值作为关联键,循环遍历常量值的分解结果:

    define('CONFIG_CODES', 'v1,v2,v3');
    $initialized = array();
    foreach(explode(',', CONFIG_CODES) as $val){
        $initialized[$val] = array(
            'val1',
            'val2'
        );
    }
    
        2
  •  1
  •   Ice76    7 年前

    这可能是你想要的东西?

    define( 'CONFIG_ARRAY', 'v1, v2, v3' );
    define( 'VALUES', 2 );
    
    function makeArray()
    {
        $array = array();
        $versions = explode( ',', CONFIG_ARRAY );
        foreach ( $versions as $version )
        {
            $array[$version] = array();
            for( $i = 0; $i < VALUES; $i++ )
            {
                $array[$version][$i] = '';
            }
        }
        return $array;
    }
    

    这将是一个生成器函数,但您可以从函数中删除代码并使用它生成数组。