【问题标题】:function not returning array php函数不返回数组php
【发布时间】:2018-02-07 06:31:28
【问题描述】:

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

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
        )

)

【问题讨论】:

  • 也分享您的意见?
  • 如果你提供php数组而不是输出就好了。
  • 由于您之前提出的模棱两可的问题,人们对他们的答案投了反对票。所以,下次请具体点。
  • @user2486 也添加了链接
  • @SagarPPanchal 使用您的函数创建示例演示,按预期工作:check here

标签: php arrays recursion


【解决方案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 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2015-04-27
    • 2012-11-10
    相关资源
    最近更新 更多