我们已经写了这个函数来返回特定的数组
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
)
**已编辑**
这是实际的数组:
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
)
)
答案 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 )