【问题标题】:How to append to an existing array value in PHP [duplicate]如何附加到PHP中的现有数组值[重复]
【发布时间】:2023-03-07 19:56:01
【问题描述】:

我需要将两个 PHP 关联数组值合并为一个。 考虑这段代码:

$period['duration'] = "35";
$period['timeunit'] = "Years";

print_r($period);

输出:

Array
(
    [duration] => 35
    [timeunit] => Years
)

但我最终需要的是:

Array
(
    [duration] => 35 Years
)

我已经为此搜索了文档,但只能找到如何合并整个数组或将新键附加到数组等。

这是因为我有一个 HTML 表单,其中有一个数字文本字段,然后是单位的下拉列表(例如年、月等)

在通过 POST 提交之前,我看不到将两个单独的输入字段组合在一起的纯 HTML 方式,否则我会这样做。我假设 PHP 之后处理 post 值比使用 javascript 预处理更可取。

【问题讨论】:

  • @mickmackusa 这个问题和我的完全不同。这是关于将两个字符串连接在一起,而不是附加到数组中的现有值。
  • $period['duration'] 是一个字符串。 $period['timeunit'] 是一个字符串。
  • $period['duration'] .= ' ' . array_pop($period); 3v4l.org/5TPm8
  • 啊,我明白了。您可以使用 .= 附加常规字符串。我一直认为数组是不同的,但我猜每个值都与常规字符串相同。非常感谢您的帮助。

标签: php html arrays post


【解决方案1】:

为什么不用你想要的数据创建一个新数组

$period['duration'] = "35";
$period['timeunit'] = "Years";
print_r($period);
$period2 = ['duration' => $period['duration'] . ' ' . $period['timeunit']];
//another way will be but if you have more elements not work like you expected
$period2['duration'] = implode(' ', $period); 

【讨论】:

  • 感谢@Emiliano!这是一种解决方法,尽管我决定重新考虑我的方法,并且可能有第三个字段来代替连接数据。
【解决方案2】:

两种方法适合你:

  1. 使用点连接持续时间、空间和时间单位,然后从数组中删除时间单位:
$period['duration'] .= " " . $period['timeunit'];
unset($period['timeunit']);
  1. 使用implode(),但这种方式仅适用于您的数组只有 2 个元素:
$duration = implode(" ", $period);
$period = ['duration' => $duration];

【讨论】:

  • 感谢@Calos 第一个选项在正确的行上,但它会覆盖数组中的所有其他值...(假设我有 50 个与这两个无关的其他值).. 它应该是: $period['duration'] => $duration;但是,当我从数据库重新加载值时,它显然显示错误,所以我实际上需要完全重新考虑我的方法! (我想我会有第三个带有连接数据的数组值)。不过感谢您的帮助!
  • 好的,虽然这个问题被标记为重复,但我根据您的描述修改了第一种方法,希望对您有所帮助。
  • 太棒了!谢谢,卡洛斯。
猜你喜欢
  • 2020-07-11
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多