1

配列パラメータを次のように受け入れる関数があります

array('employee_name' => 'employee_location' )

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

'US'をデフォルトの場所とオプションの値として保持したいので、

だから私が合格した場合

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

MI6があなたを追い詰めることに注意してください:$agents = array('007' => 'UK');に変換されます...英国と米国には「特別な関係」$agents['UK'] => 'US'があることは知っていますが、これは物事を少し遠ざけています、IMHO。

$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 に答える
3
foreach ($arr as $k => $v) {
    if (is_int($k)) {
        unset($arr[$k]);
        $arr[$v] = 'U.S.';
    }
 }
于 2012-09-26T15:25:44.713 に答える
-1

私は次のようなもので作業します:

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