2

我是 PHP 新手,希望人们可以帮助我获得更好的见解。我正在尝试将我在 JS 中遇到的问题解决到 PHP 中,以更好地理解语法并遇到此错误:

PHP 致命错误:未捕获 TypeError:传递给 Serializer::serializeArray() 的参数 1 必须是数组类型,给定 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;
            }
        }
    }
}
4

1 回答 1

2

当这对数字包含数组的第一个元素时,您的函数将无法正常工作。你用:

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();
}
于 2019-01-18T22:35:43.953 回答