函数没有返回数组PHP

时间:2018-02-07 06:31:28

标签: php arrays recursion

我们已经写了这个函数来返回特定的数组

public function searchArrayMultidimensional($array,$key){
    foreach($array as $k=>$row){
        if($k==$key){
            if(is_array($row)){
                return $row;
            }else{
                continue;
            }
        }else{
            $this->searchArrayMultidimensional($row,$key);
        }
    }
}

没问题的是,当我们在此行foreach内的return $row;内打印时,它会返回完美的结果,

我们使用

调用此函数或print_r此函数
print_r($this->searchArrayMultidimensional($giftProducts,'sku'));

它没有产生数组

实际结果:(空白)

预期结果:

Array
(
    [0] => HHM1601
    [1] => HHM1602
    [2] => HHM1603
    [3] => HHM1604
    [4] => HHM1605
    [5] => HHM1606
    [6] => HHM1607
)

**已编辑**

这是实际的数组:

original array link

Array
(
    [0] => Array
        (
            [196] => Array
                (
                    [sku] => Array
                        (
                            [0] => HHM1601
                            [1] => HHM1602
                            [2] => HHM1603
                            [3] => HHM1604
                            [4] => HHM1605
                            [5] => HHM1606
                            [6] => HHM1607
                        )

                    [qty] => 3.0000
                    [rule_id] => 196
                )

        )

    [1] => Array
        (
            [sku] => IS1617
            [qty] => 1
            [auto_add] => 1
            [rule_id] => 263
            [qtyIncreased] => 1
        )

)

1 个答案:

答案 0 :(得分:1)

您应该在代码中更改两件事: 写$k===$key而不是$k==$key else语句return $this->searchArrayMultidimensional($row,$key);

最后你的代码应该是这样的:

public function searchArrayMultidimensional($array,$key){
    foreach($array as $k=>$row){
        if($k===$key){
            if(is_array($row)){
                return $row;
            }else{
                continue;
            }
        }else{
            return $this->searchArrayMultidimensional($row,$key);
        }
    }
}

注意:

您应该编写===比较运算符,因为您的第一个键是0,当您将0与带==运算符的字符串进行比较时,它会返回true和您的回应是:

Array ( [196] => Array ( [sku] => Array ( [0] => HHM1601 [1] => HHM1602 [2] => HHM1603 [3] => HHM1604 [4] => HHM1605 [5] => HHM1606 [6] => HHM1607 ) [qty] => 3 [rule_id] => 196 ) )

不是

Array ( [0] => HHM1601 [1] => HHM1602 [2] => HHM1603 [3] => HHM1604 [4] => HHM1605 [5] => HHM1606 [6] => HHM1607 )