Php 我应该在使用where()时使用if-else吗

Php 我应该在使用where()时使用if-else吗,php,laravel,Php,Laravel,$search\u val当它有两个或多个值时是数组。但是当$search\u val只有一个值时,$search\u val不是数组。这将是一个数字 在这种情况下,我应该使用if-else吗 案例1:如果有其他情况,则不使用 案例2:如果还有 这个怎么样 $query->whereIn('column', is_array($search_val) ? $search_val : [$search_val]); 这个怎么样 $query->whereIn('column', is

$search\u val
当它有两个或多个值时是数组。但是当
$search\u val
只有一个值时,
$search\u val
不是数组。这将是一个数字

在这种情况下,我应该使用if-else吗

案例1:如果有其他情况,则不使用

案例2:如果还有

这个怎么样

$query->whereIn('column', is_array($search_val) ? $search_val : [$search_val]);
这个怎么样

$query->whereIn('column', is_array($search_val) ? $search_val : [$search_val]);

我认为这个问题有一些有趣的方面需要回答,以便形成正确的答案

可以
其中
函数采用标量(即非数组)值吗?

从中,它不处理标量值。这意味着我们必须提供一个数组,因此这意味着上面的案例1将不起作用

是否可以使用
if
/
else
语句来确定在何处使用
where
where

当然!但最终,当函数的实际有用性没有增加一点时,函数的长度(以行数为单位)会增加

您可以在一行中完成:

$query->whereIn('column', is_array($search_val) ? $search_val : [$search_val]);
这使得事情稍微整洁了一点。但我的猜测是,最终你可能会(可能在其他地方)得到比你希望的更多的此类支票。事实上,这可以被视为一种挑战

解决问题的根源


我的建议是修复问题的根源——返回数组或标量值的函数或代码段。使其始终返回一个数组。如果它只是一个单一的值,请将其转换为一个元素数组。

我认为这个问题有一些有趣的方面需要回答,以便形成正确的答案

可以
其中
函数采用标量(即非数组)值吗?

从中,它不处理标量值。这意味着我们必须提供一个数组,因此这意味着上面的案例1将不起作用

是否可以使用
if
/
else
语句来确定在何处使用
where
where

当然!但最终,当函数的实际有用性没有增加一点时,函数的长度(以行数为单位)会增加

您可以在一行中完成:

$query->whereIn('column', is_array($search_val) ? $search_val : [$search_val]);
这使得事情稍微整洁了一点。但我的猜测是,最终你可能会(可能在其他地方)得到比你希望的更多的此类支票。事实上,这可以被视为一种挑战

解决问题的根源


我的建议是修复问题的根源——返回数组或标量值的函数或代码段。使其始终返回一个数组。如果它只是一个值,则将其转换为一个元素数组。

虽然这个答案可能是正确且有用的,但如果您在其中包含一些解释,以解释它如何帮助解决问题,则最好是这样。如果有一个变化(可能无关)导致它停止工作,并且用户需要了解它曾经是如何工作的,那么这在将来会变得特别有用。虽然这个答案可能是正确和有用的,但如果您在其中包含一些解释,以解释它如何帮助解决问题,则最好使用它。如果有一个变化(可能是无关的)导致它停止工作,并且用户需要了解它曾经是如何工作的,那么这在将来变得特别有用。