gpt4 book ai didi

php - 向数组添加空值

转载 作者:可可西里 更新时间:2023-11-01 13:21:54 25 4
gpt4 key购买 nike

我有这个方法:

public function search($searchKey=null, $summary=null, $title=null, $authors=null, $paginationPage=0) { 
...
}

我正在尝试用这个检索所有参数:

$Class = new Search();

// Get parameters
$ReflectionMethod = new \ReflectionMethod($Class, "search");
try {
foreach($ReflectionMethod->getParameters() AS $Parameter) {
if(array_key_exists($Parameter->name, $this->params)) {
$parameters[$Parameter->name] = $this->params[$Parameter->name];
} elseif($Parameter->isDefaultValueAvailable()) {
$paramaters[$Parameter->name] = $Parameter->getDefaultValue();
} else {
...
}
} catch(\Exception $e) {
...
}
// Call function
return call_user_func_array(array($Class, "search"), $parameters);

我的 $this->params 有这个内容:

array
'paginationPage' => int 2
'id' => int 30
'searchKey' => string 'test' (length=4)

因为 $summary、$title 和 $authors 不存在,它们将获得默认值,即 null。将空值分配给参数时,它将被跳过,从而导致 $parameters 数组如下所示:

array
'searchKey' => string 'test' (length=4)
'paginationPage' => int 2

这导致方法调用如下:

public function search('test', 2, null, null, 0) { 
...
}

虽然它应该是:

public function search('test', null, null, null, 2) { 
...
}

希望您能看到问题所在。我怎样才能确保这些空值也被放入我的 $parameters 数组中。添加无效值是不可能的,因为它是用户输入的,所以基本上可以是所有内容。

编辑

在上面的示例中,方法 search 是硬编码的。但简化的事情之一是 search 实际上是一个变量,因此 search 可以是任何东西。这意味着我不知道该方法的参数是什么,我不能在 foreach 循环之前预先定义它们。预定义参数的解决方案实际上正是这段代码应该做的。

最佳答案

如何在进入foreach 循环之前预初始化$parameters:

$parameters = array(
$searchKey => null,
$summary => null,
$title => null,
$authors => null,
$paginationPage => 0
);

关于php - 向数组添加空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4333077/

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