为了账号安全,请及时绑定邮箱和手机立即绑定

PHP中从多维数组中获取平面数组的内置方法

PHP中从多维数组中获取平面数组的内置方法

PHP
呼啦一阵风 2021-10-22 15:22:12
我正在寻找一种简短的内置方法来从 PHP 中的多维数组的值(我对数组键不感兴趣)中获取平面数组。是否有任何内置函数可以从多维数组中获取元素数组(不是数组)?我搜索了 array_flat 或类似的关键字,但一无所获。尽管我正在寻找一种在 PHP 中获取平面数组的有效方法,但我真正想要的是按以下方式使用 array_filter:方式。$result = array_filter($array, '!is_array')或者可能:$result = array_filter($array, 'is_array === false')但是,上面的代码不起作用。以下解决方案有效,但它们不是我想要的。第一个解决方案:$result = array_diff(array_values($array), array_filter(array_values($array), 'is_array'));第二种解决方案:$result =  (array_filter(array_values($args), function($value) {  if(!is_array($value)) {    return $value;  }}));;我也可以尝试使用foreachor array_map,但我想编写更少的代码。为什么是这样?基本上,为了帮助我进行文件上传和表单验证,我正在构建一个名为 Validator 的类,它将接受回调(我想要的数量)并执行。可以在验证之前、验证期间和验证之后传递回调以运行。这些是主要的回调;对于每个主回调,如果主回调失败,可以传递一个“onfailure”回调来运行,如果成功则传递一个“onsuccess”回调。Validator 类在添加函数时将非常灵活并且可以自定义其参数,因此我需要创建一个稍微复杂的代码来查找哪个参数是哪个。参数可能有嵌套数组,这就是为什么我想要一种有效的方法来展平嵌套数组。我的 Validtor 类的 addCallback 方法将能够接收以下参数:    'aftervalidation', $callback, $args    ['onvalidation', 'callback' => $callback, 'args' => $args]    ['onvalidation', [callback => $callback, 'args' => $args], ]    ['onvalidation', [$callback, 'args' => $args], ['onsuccess' => $callback, 'args'=> args]]    ['aftervalidation', ['callback', 'args' => $args], ['onsuccess' => $callback, $args]]    ['beforevalidation', ['callback;, 'args' => $args], ['onsuccess' => $callback,]]    ['aftervalidation', [$callback, 'args' => $args], ['onsuccess' => $callback', 'args' => args]]    ['onvalidation', ['callback' => $callback, 'args' => $args], ['onsuccess' => $callback', $args]]除了这些嵌套数组,$args 可能是回调的 args 数组。所以我需要对这些数组进行展平以找出哪些参数是哪些。注意:出于个人原因,无法为其创建自定义函数。PHP 版本是 7.3
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

不推荐作为它的加注通知,但您可以使用array-keysarray-flip(添加@以避免通知)作为:

$a = @array_keys(array_flip($arr));

这将像array_flip遇到通知一样工作,因为数组不能是键 -> 所以它实际上过滤了非数组 - 但这不是最佳实践!我建议您编写自定义函数 - 不明白为什么不能这样做......

现场示例:3v4l


查看完整回答
反对 回复 2021-10-22
  • 2 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信