1

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

array('employee_name' => 'employee_location' )

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

我希望保留“美国”作为默认位置和可选值,所以

所以如果我通过

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

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

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

4 回答 4

4

没有内置功能。

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

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

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

显然,这会因重复名称而中断。

于 2012-09-26T15:26:48.623 回答
3
foreach ($arr as $k => $v) {
    if (is_int($k)) {
        unset($arr[$k]);
        $arr[$v] = 'U.S.';
    }
 }
于 2012-09-26T15:25:44.713 回答
3

请注意,军情六处会追捕你:$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;
}

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

于 2012-09-26T15:41:47.690 回答
-1

我会使用这样的东西:

foreach ( $array AS $key => $value )
{
 if ( is_numeric($key) )
 {
  $key = 'U.S';
 }
 $array[$key] = $value;
}
于 2012-09-26T15:27:20.340 回答