首页 > 解决方案 > sizeof() 引发数组错误

问题描述

我有数组并尝试在函数中引用它,例如:

 function merge_ids(&$s_prod_ids){
    if (sizeof($s_prod_ids) > 1){
        $l=0;
        $r=sizeof($s_prod_ids)-1;
        $mid = sizeof($s_prod_ids)/2;
        $L=$mid-$l+1;
        $R=$r-$mid;
        $this->merge_ids($L);
        $this->merge_ids($R);
        $left_first=0;
        $right_first=0;
        $main=0;
        while (sizeof($L) > $left_first && sizeof($R) > $right_first){
            if ($L[$left_first] < $R[$right_first]){
                $s_prod_ids[$main] = $L[$left_first];
                $left_first++;
            }else{
                $s_prod_ids[$main]=$R[$right_first];
            }
            $main++;
        }
        while ($left_first < sizeof($L)){
            $s_prod_ids[$main] = $L[$left_first];
            $left_first++;
            $main++;
        }
        while ($right_first < sizeof($R)){
            $s_prod_ids[$main] = $R[$right_first];
            $right_first++;
            $main++;
        }
    }

}

public function index()
{
    $alg = new SliderController();
    $s_prod_ids = array(1,2,3,4 ...)
    $alg->merge_ids($s_prod_ids)

但是sizeof引发错误并说 sizeof 参数必须是数组。我检查了它dd()merge_ids获取了数组,但sizeof没有工作。有人可以说我在 php 中做错了什么吗?

标签: php

解决方案


首先s_prod_ids获取数组,但是,接下来当您使用递归时int,请像这样更改您的$LAND $R

$L = array_slice($s_prod_ids, 0, $mid);
$R = array_slice($s_prod_ids, $mid);

现在你正在切割你的 id


推荐阅读