我是PHP的新手,希望人们能帮助我获得更好的见解。我正试图解决我在JS中转换成PHP时遇到的一个问题,以更好地理解语法并运行此错误:
PHP致命错误:未捕获的TypeError:传递给Serializer :: serializeArray()的参数1必须为array类型,给定为null,在/leetcode/precomiled/serializer.php中调用
这是我的代码。我希望有人可以告诉我我在做什么错,以更好地理解并避免进一步的PHP错误。谢谢所有回答的人。
class Solution {
function twoSum($nums, $target) {
$collection = array();
foreach($nums as $key => $num) {
$subtracted = $target - $num;
if ($collection[$subtracted]) {
return array($collection[$subtracted], $key);
} else {
$collection[$num] = $key;
}
}
}
}
答案 0 :(得分:1)
当一对数字包含数组的第一个元素时,您的函数无法正常工作。您使用:
if ($collection[$subtracted])
测试$subtracted
是否为数组的键。但是,如果$collection[$subtracted]
的值为0
,则也将无法通过if
测试。将其更改为:
if (isset($collection[$subtracted]))
您还应该添加:
return array();
在for
循环之后,因此,如果找不到匹配的元素,默认情况下它将返回一个空数组。
function twoSum($nums, $target) {
$collection = array();
foreach($nums as $key => $num) {
$subtracted = $target - $num;
if (isset($collection[$subtracted])) {
return array($collection[$subtracted], $key);
} else {
$collection[$num] = $key;
}
}
return array();
}