如何实现array_filter() 更清晰

阿努比斯伏尔加

我需要一些 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用MATLAB使黑板上的文字看起来更清晰?

来自分类Dev

如何为Vagrant机器取一个更清晰的名称

来自分类Dev

如何使dom操作更加清晰

来自分类Dev

如何使我的代码更清晰

来自分类Dev

如何使用ggbiplot使Biplot名称更清晰

来自分类Dev

如何清晰地使Spark失败

来自分类Dev

在PhpStorm中使字体更清晰

来自分类Dev

使盒子更清晰地解释

来自分类Dev

如何使字体更清晰?

来自分类Dev

如何更改点的颜色或在varImpPlot函数中填充点以使其更清晰?

来自分类Dev

如何使用Matplotlib使剧情标题更清晰易读

来自分类Dev

如何使用PHP和Laravel使视图文件中的代码更清晰?

来自分类Dev

OSX上iTerm的更清晰的字体

来自分类Dev

为什么使用&&比if ... fi快75倍,以及如何使代码更清晰

来自分类Dev

如何获得最清晰的文字?

来自分类Dev

如何创建背景清晰的按钮

来自分类Dev

PHP使用array_filter

来自分类Dev

如何制作清晰的表格视图

来自分类Dev

如何使我的代码更清晰

来自分类Dev

如何使Google Chrome浏览器标签更清晰?

来自分类Dev

使 Google Chrome 中的字体更清晰、更锐利

来自分类Dev

如何将这个 JavaScript 嵌套的 For 循环替换为更清晰简洁的内容?

来自分类Dev

如何在函数参数中编写更清晰的超长字典?

来自分类Dev

如何使用 VMware 清晰度实现轮播?

来自分类Dev

用于更清晰代码的嵌套命名空间

来自分类Dev

如何清晰地布置边缘?

来自分类Dev

如何讓背景清晰

来自分类Dev

Array_Filter 移除

来自分类Dev

array_filter 如何返回一个对象