在一次调用中向PHP中的关联数组添加多个值

1aaf6o9v  于 2023-05-16  发布在  PHP
关注(0)|答案(5)|浏览(151)

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

"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';

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

agyaoht7

agyaoht71#

试试这个:

$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中,它将不会被覆盖。

3yhwsihp

3yhwsihp2#

为了保持整洁,在本例中,简单,您最好使用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()都会在控制台中给予你一个data/created数组的打印输出。这样您就可以自己查看所有内容都已正确创建,并且每个键都有其关联的值(查看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

q3aa0525

q3aa05253#

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

ruarlubt

ruarlubt4#

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

kqqjbcuj

kqqjbcuj5#

你也可以使用spread运算符,如果你必须在循环中合并数组,它会更快:

$post_values = [ 
    "x_login"    => "aaa", 
    "x_tran_key" => "bbb", 
];

$dataToAdd = [
    "foo" => "abc",  
    "bar" => "def",  
];

$result = [
    ...$post_values,
    ...$dataToAdd
];

print_r($result);

其结果是:

Array
(
    [x_login] => aaa
    [x_tran_key] => bbb
    [foo] => abc
    [bar] => def
)

相关问题