我想扩展一个包含一个或多个来自数组的值的字符串。
期望的结果:
http://example.com/search/key=["Start", "USA", "Minneapolis"]&shift=false
阵列:
array(2) {
[0]=>
string(8) "USA"
[1]=>
string(4) "Minneapolis"
}
PHP代码:
$myArr = ("USA", "Minneapolis");
$string = 'http://example.com/search/key=["Start",' .$myArr[0]. ']&shift=false';
给我这个结果:http://example.com/search/key=["Start", "USA"]&shift=false
如何使其更具动态性,以便可以添加多个值?我知道我不得不使用foreach($myArr as $i){...}
并通过$string +=
连接值,但因为我的变量位于字符串的中间,所以我有点坚持这种方法。
答案 0 :(得分:2)
尝试以下方法:
$myArr = array("USA", "Minneapolis");
$string = 'http://example.com/search/key=["Start", "' . implode('", "', $myArr) . '"]&shift=false';
这将使用implode
提供预期的输出。
答案 1 :(得分:1)
有些东西不对。您试图通过查询字符串传递数组数据,但不是在有效的数组结构中。这意味着你要么不在下一页上将它用作数组,要么在数据到达时你不得不砍掉它。
我会假设你想要清理你的过程......
代码:(Demo)
function add_safe_values($array){
$string='';
foreach($array as $v){
$string.='&key[]='.urlencode($v); // concat & url_encode if they may include any clashing symbols
}
return $string;
}
$myArr=["USA","Minneapolis","monkey=wren[h"];
$url='http://example.com/search/?key[]=Start'.add_safe_values($myArr).'&shift=false';
echo $url;
输出:
http://example.com/search/?key[]=Start&key[]=USA&key[]=Minneapolis&key[]=monkey%3Dwren%5Bh&shift=false
?
,因为这意味着查询字符串的开始。key
数组元素。url_encode()
只是为了安全,但如果你不处理任何破坏语法的字符,那么它就可以省略。如果您有正当理由使用原始格式错误的语法,我很乐意听到。否则,请使用我的方法,以便进行干净,有效的Web开发。