如何附加到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中的现有数组值[重复]的主要内容,如果未能解决你的问题,请参考以下文章