php.ini 多维数组,将列数据的多维数组重组为行数据的多维数组

想看花哨的把戏吗?

(PHP最低版本:5.6)

如果您从中剥离阵列键(id和date),则$where可以使用一个variadic函数并编写一个漂亮而紧凑的小单行代码!而且您不必费心实例化任何result数组-不必大惊小怪。PHP非常出色-忠实拥护者。

输入:

$where=['id'=>[12,13,14],'date'=>['1999-06-12','2000-03-21','2006-09-31']];

方法#1:可变参数array_map()与func_get_args()

$comb=array_map(function(){return func_get_args();},...array_values($where));

var_export($comb);

该方法是健壮的,因为它将处理可变数量的“行”和“列”。这是一个带有一些示例的演示。

或者,如果您的年龄低于5.6,则可以使用此方法,但它的灵活性/鲁棒性较差(OP样本数据的字面量更大):

方法2:具有两个输入的array_map()

$comb=array_map(function($v1,$v2){return [$v1,$v2];},$where['id'],$where['date']);

var_export($comb);

两种方法的输出:

array (

0 =>

array (

0 => 12,

1 => '1999-06-12',

),

1 =>

array (

0 => 13,

1 => '2000-03-21',

),

2 =>

array (

0 => 14,

1 => '2006-09-31',

),

)

我发现array_map()这是我最喜欢的函数,因为它在同一行中创建了结果数组(而不是像array_walk()这样返回真/假结果;或者在完成后使用foreach循环进行打印)。这意味着您可以在不声明结果变量的情况下进行真正的单线打印。

var_export(array_map(function(){return func_get_args();},...array_values($where)));

要么

var_export(array_map(function($v1,$v2){return [$v1,$v2];},$where['id'],$where['date']));

想看到“幻想”变成“精神幻想”吗?

(演示)

$where = [

'id' => [12,13,14],

'date'=>['1999-06-12','2000-03-21','2006-09-31']

];

var_export(array_map(null, ...array_values($where)));

与上面相同的效果,只是语法更简洁。

如果有人试图决定要为自己的项目使用哪种解决方案,那么Alex的迭代array_column()调用将比IMO的Sahil的调用更好,因为它更加灵活/健壮(不需要对所有列名进行硬编码),如果您的输入数组具有变量,则可以立即展开专栏,并且总体上更具简洁性和表现力。

为此,我的最后一个代码片段(schmancy)也适用于可变的输入大小,并且非常简洁。Alex和我的之间的主要区别是null有价值的占位元素的生成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值