我有一个接受数组参数的函数
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' )
答案 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;
}