Why does everything work normally with a single use, but if you call a function twice, everything breaks?
$arr1 = [1, 2, 3, 4]; $arr2 = [3, 2, 2, 1, 0, 6, 1]; $arr3 = [1, 3, 2, 1, 5, 4, 1]; function rob($ar){ function fun($arr, $acc = 0) { if(max($arr) == null) { return $acc; } else { $acc = $acc + max($arr); $key = array_search(max($arr), $arr); if ($key === 0) { $arr[$key] = null; $arr[$key + 1] = null; return fun($arr, $acc); } elseif ($key === (count($arr) - 1)) { $arr[$key] = null; $arr[$key - 1] = null; return fun($arr, $acc); } else { $arr[$key] = null; $arr[$key + 1] = null; $arr[$key - 1] = null; return fun($arr, $acc); } } } // return $a = fun($ar); return $a; } echo rob($arr1)."\n"; echo rob($arr2)."\n"; echo rob($arr3)."\n";