gpt4 book ai didi

PHP:如何动态添加到http_build_query?

转载 作者:可可西里 更新时间:2023-11-01 17:04:10 24 4
gpt4 key购买 nike

我基本上有一个抓取对象。我希望能够像这样向它添加 POST 变量

$obj->addvar('Name', 'Value');

我现在拥有的是:

  function addvar($var, $val) {
$postvars[] = Array($var=>$val);
}
function initiate() {
$this->q = $postvars;
}
if(!empty($this->post)) {
$this->params = http_build_query($q);
}

我还没有测试,因为它太不完整,但是我的 addvar() 函数可以工作吗?我究竟如何将键+值附加到数组以便 http_build_query 接受它?

IE(这就是我想要的):

$obj->addvar('username', 'abc');
$obj->addvar('password', 'foobar');
$obj->send(); //..

最佳答案

您的代码中有几个问题:

  • 在您的addvar 方法中,您没有访问任何实例变量。您正在将值分配给局部变量。
  • 您的initiate 方法无法访问变量$postvar
  • if 子句中,您正在访问局部变量 $q 而不是实例变量 $this->q
  • 您想将一组数组传递给 http_build_query,但必须是“普通”数组。

你搞混了很多!

你的类的一个更完整的例子会很有帮助,但我认为它应该看起来更像这样:

class QueryBuilder {
private $params = array();

public function addParameter($key, $value) {
$this->params[$key] = $value;
}

public function send() {
$query = http_build_query($this->params);
// whatever else has to be done to send.
// for the sake of this example, it just returns the query string:
return $query;
}
}

例子:

$obj = new QueryBuilder();
$obj->addParameter('username', 'abc');
$obj->addParameter('password', 'foobar');
echo $obj->send(); // echos 'username=abc&password=foobar'

一般来说,如果您已经有了由 html_build_query 构建的查询,您可以只附加到该字符串:

$query = http_build_query(array('foo' => 'bar', 'faa' => 'baz'));
$query .= '&key=value';
echo $query; // echos 'foo=bar&faa=baz&key=value'

关于PHP:如何动态添加到http_build_query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2606834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com