【问题标题】:Adding multiple values to an associative array in PHP in one call在一次调用中将多个值添加到 PHP 中的关联数组
【发布时间】:2011-10-30 16:52:20
【问题描述】:

我正在尝试实例化一个关联数组,然后在第二次调用中,在一个块行上为其分配各种其他值集。我想按照与实例化相同的形式执行此操作:

"variable"  = > 'value';

我的实例化是:

$post_values = array(
    "x_login"           => "API_LOGIN_ID",
    "x_tran_key"        => "TRANSACTION_KEY",
);

我想补充:

"x_version"         => "3.1",
"x_delim_data"      => "TRUE",
"x_delim_char"      => "|",
"x_relay_response"  => "FALSE",
"x_state"           => "WA",
"x_zip"             => "98004"

我有哪些选择?也许有一个我不知道的 array_push 用法可以更轻松地添加多个值?或者我是否坚持在每次通话中增加价值,例如:

$post_values['x_version']='3.1'; 
 ....
$post_values['x_zip']='98004';

还有其他优雅的方法可以在一行中将多个值添加到关联数组中吗?

【问题讨论】:

标签: php arrays associative


【解决方案1】:

试试这个:

$post_values = array( 
    "x_login"           => "API_LOGIN_ID", 
    "x_tran_key"        => "TRANSACTION_KEY", 
); 

$array2 = array(
    "x_version"         => "3.1",  
    "x_delim_data"      => "TRUE",  
    "x_delim_char"      => "|",  
    "x_relay_response"  => "FALSE",  
    "x_state"           => "WA",  
    "x_zip"             => "98004"  
);

$result = $post_values + $array2;

注意:如果密钥已经存在于 $post_values 中,它不会被覆盖。

【讨论】:

  • 似乎 array_merge 覆盖,其中 + 是相同的函数但不会覆盖。明白了,谢谢:)
  • 你也可以像$post_values += ['x_version' => '3.1', 'x_zip' => 98004];这样使用+=操作符
【解决方案2】:

为了让事情变得干净整洁,在这种情况下简单,你最好使用array_merge( )

我个人在我的类文件的顶部声明任何数组,以使它们全局可访问,只是因为我倾向于让方法不受数组声明(我猜是强迫症!)

所以对我来说,我有一个示例可能对您有所帮助,当需要将两个数组添加/合并在一起时,它对我有用:

protected $array1 = array (
  'basic'   => '1',
  'example' => '2',
  'for'     => '3'  
);

protected $array2 = array(
  'merging'     => '4',
  'two'         => '5',
  'associative' => '6',
  'arrays'      => '7',
  'mate'        => '8'
);

然后在您的类文件中,您可以使用这些数组或任何已创建的数组并随时合并:

public function ExampleOne() 
{
  $firstArray = $this->array1;
  print_r($firstArray);

  $secondArray = $this->array2;
  print_r($secondArray);

  $merged = array_merge($firstArray, $secondArray);
  print_r($merged);
}

每个 print_r( ) 都会在数据/创建数组的控制台中为您提供打印输出。这样您就可以自己查看所有内容都已正确创建,并且每个键都有其关联的值(查看 PHP 手册页以获取对 print_r( ) 的明确解释)。

所以,第一个数组将/应该展示这个:

Array
(
  [basic]   => 1
  [example] => 2
  [for]     => 3
)

第二个数组将/应该展示这个:

Array
(
  [merging]     => 4
  [two]         => 5
  [associative] => 6
  [arrays]      => 7
  [mate]        => 8
)

array_merge() 操作将创建最终的数组,它将/应该展示这个:

Array
(
  [basic]       => 1
  [example]     => 2
  [for]         => 3
  [merging]     => 4
  [two]         => 5
  [associative] => 6
  [arrays]      => 7
  [mate]        => 8
)

当然,您不必总是将数组放置/创建在类文件的顶部,并且当需要时,您显然可以在单个函数中创建数组,如果它们仅在其中需要/使用 - 我展示了这只是我最近为工作中的一个项目所做的事情(这些数组中的数据当然是示例数据!)

希望这可以帮助人们更多:-D

【讨论】:

    【解决方案3】:

    array_push() 将接受要推送的数组。
    但是array_merge() 可能是你想要的更多。

    【讨论】:

      【解决方案4】:

      您可以尝试使用以下函数:array_merge

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-03
        • 2021-12-29
        • 1970-01-01
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多