PostgreSQL 版本 14
我的查询从 pgAdmin 运行时的行为与从 PHP 运行时的行为不同。
SELECT * FROM UNNEST('{1,2,3,4,5}'::integer[] - '{2,4}'::integer[])
当我从 pgAdmin 运行它时,它工作正常。当我使用 PDO 通过 PHP 传递它时,我得到 错误:运算符不存在:整数[] - 整数[]。
该数组运算符由 intarray 模块提供。 CREATE EXTENSION intarray 告诉我扩展已安装。这就像 intarray 模块由于某种原因不可用于 PHP 进程。
有人能指出我正确的方向吗?
要解决 PHP 中无法使用
int[]
运算符的问题,您需要了解 PHP 本身并不支持函数参数中数组元素的类型提示。但是,您可以通过使用 PHP 的 is_array
函数以及函数内的类型检查来实现解决方法。
以下是如何实现此目标的示例:
function processIntArray(array $input) {
foreach ($input as $element) {
if (!is_int($element)) {
throw new InvalidArgumentException("All elements in the array must be integers.");
}
}
// Proceed with your logic here
}
// Example usage:
try {
processIntArray([1, 2, 3, 4]);
echo "Array processed successfully.";
} catch (InvalidArgumentException $e) {
echo $e->getMessage();
}
在此功能中:
array
作为类型提示来确保输入是一个数组。is_int
循环遍历数组的每个元素以检查它是否是整数。InvalidArgumentException
。此方法可确保您的函数仅处理整数数组。