PHP中关联数组的默认值

时间:2012-09-26 15:23:39

标签: php

我有一个接受数组参数的函数

array('employee_name' => 'employee_location' )

eg:
array('John' => 'U.S', 'Hitler' => 'Australia', 'Unitech' => 'U.S' )

我希望将'美国'作为默认位置和可选值,所以

所以如果我通过

array('John', 'Hitler' => 'Australia', 'Unitech')

php中是否有一个内置函数可以自动将其转换为

array('John' => 'U.S', 'Hitler' => 'Australia', 'Unitech' => 'U.S' )

4 个答案:

答案 0 :(得分:4)

没有内置功能。<​​/ p>

您应该遍历数组并检查密钥是否为数字。如果是,请使用值作为键,并将默认值添加为值。

简单示例(为清晰起见,使用新数组):

$result = array();
foreach ($arr as $key => $value)
{
  if (is_int($key))    // changed is_numeric to is_int as that is more correct
  {
    $result[$value] = $default_value;
  }
  else
  {
    $result[$key] = $value;
  }
}

显然,这会破坏重复的名称。

答案 1 :(得分:2)

foreach ($arr as $k => $v) {
    if (is_int($k)) {
        unset($arr[$k]);
        $arr[$v] = 'U.S.';
    }
 }

答案 2 :(得分:2)

请注意,MI6会追捕你:$agents = array('007' => 'UK');将转换为$agents['UK'] => 'US' ...我知道英国和美国有“特殊关系”,但这是把事情带到了一点,恕我直言。

$agents = array('007' => 'UK');
$result = array();
foreach($agents as $k => $v)
{
    if (is_numeric($k))//leave this out, of course
    {
        echo $k.' won\'t like this';//echoes 007 won't like this
    }//replace is_numeric with is_int or gettype($k) === 'integer'
    if (is_int($k))
    {//'007' isn't an int, so this won't happen
        $result[$v] = $default;
        continue;
    }
    $result[$k] = $v;
}

在此示例中,结果和输入看起来完全相同。

答案 3 :(得分:-1)

我会用这样的东西:

foreach ( $array AS $key => $value )
{
 if ( is_numeric($key) )
 {
  $key = 'U.S';
 }
 $array[$key] = $value;
}