简单来说,我有一个包含(来自所有客户的)发票的主数组。
我想尝试将其拆分为仅返回来自特定客户的发票数据的新数组。
在主发票阵列中,有一个称为customer_id
的键/值对,它获取客户的ID号。
我正在将其传递给正在创建的函数中,以便我可以指定要为其检索发票的客户。
我已经将其组合在一起,但是它总是返回NULL,我不确定为什么。
// Get customer invoices
function get_customer_invoices($customer_id = null) {
if($customer_id) {
$output = array_filter(get_invoices(), function ($item) use ($customer_id) {
if(stripos($item['customer_id'], $customer_id) !== false) {
return $output;
}
return false;
});
} else {
return false;
}
}
注意:get_invoices()
是主要功能,可从API获取所有发票并返回以下内容:
array(88) {
[0]=> array(32) {
["id"]=> int(800481)
["customer_id"]=> int(81136)
// Remaining key/value pairs
}
}
为什么这返回NULL?还是还不能诊断?
答案 0 :(得分:1)
您的代码的简化版本是:
function get_customer_invoices($customer_id = null) {
if ($customer_id) {
// return result of `array_filter` from `get_customer_invoices` function
return array_filter(get_invoices(), function ($item) use ($customer_id) {
// array_filter's callback should return `true` or `false`
return (stripos($item['customer_id'], $customer_id) !== false);
});
} else {
return false;
}
}
更新:由于您的数据样本显示customer_id
是int,所以我认为最好比较int而不是字符串。在这种情况下,过滤器功能将是:
return array_filter(get_invoices(), function ($item) use ($customer_id) {
// array_filter's callback should return `true` or `false`
return $item['customer_id'] === $customer_id;
});
提琴here。