Php 从动态生成的字符串中删除最后一个字符

Php 从动态生成的字符串中删除最后一个字符,php,Php,我试图删除字符串中的最后一个字符。我见过很多这样做的例子,但是所有的方法都在删除我的all'&',但是我只希望删除我的最后一个字符'&' 我的字符串是: ??partner#id=XXXXXXXX&api#U password=XXXXXXXXX&mobile#no=#NUMBER#运营商#代码=#运营商id#金额=#金额#和partner#U请求(U id=#ORDERID#圆圈#10)充值#类型=正常& 完整的API是动态的。我想从这个字符串中删除最后一个字符串“&”。上面这行代码来自我的P

我试图删除字符串中的最后一个字符。我见过很多这样做的例子,但是所有的方法都在删除我的all'&',但是我只希望删除我的最后一个字符'&'

我的字符串是:

??partner#id=XXXXXXXX&api#U password=XXXXXXXXX&mobile#no=#NUMBER#运营商#代码=#运营商id#金额=#金额#和partner#U请求(U id=#ORDERID#圆圈#10)充值#类型=正常&

完整的API是动态的。我想从这个字符串中删除最后一个字符串“&”。上面这行代码来自我的PHP代码:

<td><?php $parameter = fetchAPIparameter($v6['api_id'],$v6['operator_type']);
    foreach ($parameter as $v7) {
       $pks = ($v7['parameter'].'='.$v7['result'].'&'); echo ($pks);
    } ?></td>


我使用了
substr($pks,0,-1)
substr\u replace($pks,“,-1)
rtrim
mb\u substr
,但所有这些都从我的API中删除了完整的“&”。您能告诉我我犯了什么错误吗。

您需要在变量中生成一个字符串,然后删除最后一个字符。
这样做的方式是删除每个迭代中的最后一个字符,这不是您想要的

<td><?php 
$parameter = fetchAPIparameter($v6['api_id'],$v6['operator_type']);
$pks = "";
foreach ($parameter as $v7) {
   $pks .= ($v7['parameter'].'='.$v7['result'].'&');  //here i am getting error
} 
echo substr($pks,0,-1);
?></td>

=
表示它将附加到字符串中。

substr
将回显除最后一个字符以外的所有字符。

虽然如果以正确的方式应用,它应该与
substr
一起使用,但在您的情况下,最好防止添加最后一个
&
。为此,您可以使用
内爆

$parameter = fetchAPIparameter($v6['api_id'],$v6['operator_type']);
$pks=[];
foreach ($parameter as $v7) {
   $pks[] = $v7['parameter'].'='.$v7['result']; 
}
$pks = "https://website.biz/get/#TYPE#?" . implode("&", $pks);
echo $pks;

您可以这样尝试并使用:


这将使用“参数”作为键,“结果”作为值构建一个数组
$result
。然后http\u build\u查询将生成一个URL编码的查询字符串。

这是因为您回显了该字符串。只需构建字符串,删除最后一个字符,然后echo。您是否尝试过trim()?首先不要构建这样的查询字符串,请使用。我得到了确切的结果,但出现了一个错误
注意:未定义变量:pks
是否添加了第三行<代码>$pks=“”我没有添加。我得到了输出。多谢了,这个通知没有害处,只是很烦人。我通常都会处理它们,但它们(在本例中)的唯一影响是性能的轻微下降。
$result = [];
foreach ($parameter as $v7) {
    $result[$v7['parameter']] = $v7['result'];
}

$pks = "https://website.biz/get/#TYPE#?" .  http_build_query($result);