根据PHP中数组中的值扩展字符串

时间:2017-10-20 14:49:47

标签: php arrays

我想扩展一个包含一个或多个来自数组的值的字符串。

期望的结果:

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 +=连接值,但因为我的变量位于字符串的中间,所以我有点坚持这种方法。

2 个答案:

答案 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
  • 我添加了?,因为这意味着查询字符串的开始。
  • 我已使用有效的url语法声明了您的数组数据,以便您可以立即访问接收页面上的key数组元素。
  • 我正在打包url_encode()只是为了安全,但如果你不处理任何破坏语法的字符,那么它就可以省略。

如果您有正当理由使用原始格式错误的语法,我很乐意听到。否则,请使用我的方法,以便进行干净,有效的Web开发。