我需要一些 PHP 方面的帮助,因为我试图使用array_filter()
来防止多行并使其简单明了,但是即使我正在阅读此文档,我也在努力解决这个问题:Array_Filter所以我需要一个正确的方法来实现,因为有时会getCategoryTree()
出现空值或空值,我试图不显示它,我想创建其他函数来只显示没有类别的特定事物,但我觉得它效率不高:
我正在尝试从 url www.foobar.com/checkout/payments 填充,这是原始代码:
$page['eData'] = [
'codeMoneyFormatter' => $this->moneyFormatter->getcodeMoneyFormatter(),
'checkout' => [
'actionField' => ['step' => 3, 'option' => 'Review Order'],
// ---------------- THIS ONE MUST REFACTOR -------
'products' => $this->getCartFromOrder($order),
],
];
// --------------------- REFACTOR ------------------
$itemData['category'] = $category ? $this->getCategoryTree($category->getId()) : '';
// -------------------------------------------------
这个函数是它显示类别的地方,但我根本不喜欢它,因为在某些页面中它是空的/空的,这是不正确的,所以我想使用 array_filter()
// --------------------- ARRAY_FILTER ------------------
$itemData['category'] = array_filter($category ? $this->getCategoryTree($category->getId()) : '');
// -------------------------------------------------
我创建的函数只显示特定的东西,它是正确的,因为它不显示类别,但我觉得这是不必要的,因为它与原始函数重复相同:
$page['eData'] = [
'codeMoneyFormatter' => $this->moneyFormatter->getcodeMoneyFormatter(),
'checkout' => [
'actionField' => ['step' => 3, 'option' => 'Review Order'],
'products' => $this->getCheckoutFromOrder($order),
],
];
它重复了几乎相同的功能,这不是 DRY 的正确标准(不要重复自己)这就是为什么我想实现array_filter()
但如何实现???
Array_Filter 所以我需要一个正确的方法来实现,因为有时 getCategoryTree() 为空或空值
很简单,不要改变类型和饲料阵列过滤它不应该吃的东西。
array_filter($category ? $this->getCategoryTree($category->getId()) : '');
应该是(类似)
$data = $category ? $this->getCategoryTree($category->getId()) : [];
if(!is_array($data)) $data = [];
array_filter($data);
你可能可以更简单地做到这一点。但是,PHP 中的类型更改可能会很麻烦,因为该语言是松散类型的并且不会有太多抱怨。
这可以很容易地测试
var_dump(array_filter(''));
输出
<br />
<b>Warning</b>: array_filter() expects parameter 1 to be array, string given in <b>[...][...]</b> on line <b>3</b><br />
NULL
这另一方面
var_dump(array_filter([]));
简单地返回一个空数组。
我要说的最后一件事是,您在问题中输入的大约 80% 的代码对于回答问题是不必要的,只会让其他用户感到困惑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句