PHP使用数组(?)连接参数字符串


PHP using array(?) to concatenate argument string?

很抱歉没有使用正确的术语,但考虑到我的PHP级别是多么的基础,也许你不会介意这么多。

我正在使用的插件的一个函数允许参数,以便选择性地回显内容:

<?php phpquote(argumentstring); ?>

参数字符串的一个示例是例如auto_refresh=0&标签=a、b、c

我一直认为可以使用数组来构建"字符串",例如之类的东西

<?php $arg=array( 'auto_refresh' => '0', 'tags' => 'a,b,c' );
phpquote($arg); ?>

因此,我认为我可以从另一个领域引入其他内容,例如

<?php 
$fieldcontent = get_field("field_content");
$arg=array( 'auto_refresh' => '0', 'tags' => $fieldcontent );
phpquote($arg); ?>

然而,这似乎不起作用,所以我的两个问题是:

  1. 是否可以使用数组构建这样的参数字符串?还是这取决于插件
  2. 如果是这样,是否可以像上面的例子一样从其他地方引入内容

提前谢谢。我很感激这似乎是一个术语不正确的基本问题(对不起!),所以希望它对专家来说有意义。

您可以使用implode()array_map() PHP函数使数组成为参数字符串:

<?php
    $args = array( 'auto_refresh' => '0', 'tags' => 'a,b,c' );
    function rb_map( $a, $b ) {
        return $a . '=' . $b;
    }
    $arg_string = implode('&', array_map( 'rb_map', array_keys($args), $args ) );
    //var_dump($arg_string);
?>

循环遍历数组并使用implode()函数将块粘合在一起。手动

或者你也可以这样做:

$argumentString= "";
foreach($arg as $k=>$v){
    $argumentString.= $k.'='.$v.'&';
}
$argumentString = substr($argumentString,0,-1); //removes the last &
<?php
$arg=array( 'auto_refresh' => '0', 'tags' => 'a,b,c' );
echo urldecode(http_build_query($arg)); //output: auto_refresh=0&tags=a,b,c
?>

这是你想要的吗?

查看http_build_query以获取更多信息

是否可以使用数组作为函数的参数取决于在函数本身中如何定义/使用数组。

举个例子:

function test($var) {
    print_r($var);
}
$bla = array(1 => "test me", 2 => "balbla");
test($bla);

(您可以在此处玩

您可以传递一个字符串或一个数组作为test函数的参数,因为print_r能够处理这两者。例如,如果函数有echo,并且您将一个数组作为参数传递给函数,那么它就会失败。