如何附加到PHP中的现有数组值[重复]

Posted

技术标签:

【中文标题】如何附加到PHP中的现有数组值[重复]【英文标题】:How to append to an existing array value in PHP [duplicate] 【发布时间】:2020-05-01 18:06:15 【问题描述】:

我需要将两个 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 啊,我明白了。您可以使用 .= 附加常规字符串。我一直认为数组是不同的,但我猜每个值都与常规字符串相同。非常感谢您的帮助。 【参考方案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】:

两种方法适合你:

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

【讨论】:

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

以上是关于如何附加到PHP中的现有数组值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将会话值附加到API请求php的现有数组结构

PHP如何将数据附加到序列化数组中

如何将数据附加到 MERN 堆栈中 mongodb 中的现有数组

如何附加到现有列PHP中的字段

如何将文本附加到特定的php数组值

如何将文本附加到 Java 中的现有文件?