我有这个数组(
$recip
):
Array
(
[0] => 393451234567
[1] => 393479876543
)
SMS API 提供商需要以下格式的号码:
recipients[]=393334455666&recipients[]=393334455667
与
$recipients = implode('&recipients[]=',$recip);
我只能得到这个:
393471234567&recipients[]=393459876543
缺少第一个“
recipients[]
”(总的来说,第一个根本不需要“&
”)。
只需将首字母
recipients[]=
附加到字符串的前面:
$recipients = 'recipients[]=' . implode('&recipients[]=',$recip);
另一种选择:
foreach ($array as $key => $value){
$array[$key] = (($key == 0) ? '' : '&').'recipients[]='.$value;
}
$result = implode('',$array);
foreach
循环允许您连接字符串。 我进行了一项检查,以避免在字符串的第一部分附加 &。
指出这是一个选项,但另一种方法更简单!
试试这个:
vsprintf('recipients[]=%s&recipients[]=%s', $recip);
另一种选择
foreach ($recip as $ip){
$array[] = 'recipients[]=' . $ip;
}
$result = implode('&',$array);
您请求的字符串将作为查询字符串,但它不是 url 编码的查询字符串。 我将演示这两种变体的解决方案。 演示
对于与您想要的结果实际上相同的完全 url 编码的字符串,请使用本机 PHP 函数
http_build_query()
。
$array = ['393451234567', '393479876543'];
echo http_build_query(['recipients' => $array]);
recipients%5B0%5D=393451234567&recipients%5B1%5D=393479876543
或者,通过为每个数组值假装键分配字符串来实现您想要的结果,然后使用
&
进行内爆。
echo implode('&', substr_replace($array, 'recipients[]=', 0, 0));
recipients[]=393451234567&recipients[]=393479876543