无法理解我在阵列中遇到的错误

时间:2019-01-18 21:53:06

标签: php

我是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;
            }
        }
    }
}

1 个答案:

答案 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();
}