gpt4 book ai didi

PHP 7.1 用动态变量替换多个值

转载 作者:可可西里 更新时间:2023-11-01 00:12:27 25 4
gpt4 key购买 nike

我是 PHP 的新手,虽然我找到了解决问题的方法,但我觉得肯定有更简单的方法来实现相同的结果:

这是我需要做的:

我有一个这样的字符串(在真实的字符串中有大约 25 个值要替换)

"We have received ##AMOUNT## ##CURRENCY## for your OrderID n. ##ORDER_ID##"

在这个字符串中我必须替换
##AMOUNT## 具有名为 $AMOUNT
的变量的值##CURRENCY## 为变量 $CURRENCY
##ORDER_ID## 具有变量值 $ORDER_ID

目前我创建了一个数组:

$flds=['AMOUNT','CURRENCY','ORDER_ID'];

然后我使用循环和动态变量替换:
但我看到 str_replace 也接受数组,因此可以构建一个更优雅(和高效)的解决方案但是...我找不到它

可以给点提示吗?

谢谢

最佳答案

您可以使用 str_replace() ,如果你有任意变量,你可以使用 compact()将它们放在一个数组中。

<?php
$str = "We have received ##AMOUNT## ##CURRENCY## for your OrderID n. ##ORDER_ID##";

$AMOUNT = 123;
$CURRENCY = 'GBP';
$ORDER_ID = 20123;

$find = ['##AMOUNT##','##CURRENCY##','##ORDER_ID##'];
$replace = compact('AMOUNT', 'CURRENCY', 'ORDER_ID');

echo str_replace($find, $replace, $str);

https://3v4l.org/1E2Mm

结果:

我们已收到 123 英镑的 OrderID n。 20123

如果您正在寻找一种方法来只定义一次变量/占位符,然后进行匹配和替换,您可以这样做:

<?php
$str = "We have received ##AMOUNT## ##CURRENCY## for your OrderID n. ##ORDER_ID##";

$AMOUNT = 123;
$CURRENCY = 'GBP';
$ORDER_ID = 20123;

$find = ['AMOUNT', 'CURRENCY', 'ORDER_ID'];

echo str_replace(
array_map(function($v){ return '##'.$v.'##'; }, $find),
compact(...$find),
$str
);

https://3v4l.org/ekHYB

关于PHP 7.1 用动态变量替换多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48202510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com