不负相思意
解决方案1:希望这个简单的方法foreach能够获得期望的结果<?phpini_set('display_errors', 1);$where = array('id'=>array(12,13,14),'date'=>array('1999-06-12','2000-03-21','2006-09-31'));$result=array();foreach($where["id"] as $key => $value){ $result[]=array($value,$where["date"][$key]);}解决方案2:在这里我们array_walk用来达到相同的结果<?phpini_set('display_errors', 1);$result=array();$where = array('id'=>array(12,13,14),'date'=>array('1999-06-12','2000-03-21','2006-09-31'));array_walk($where["id"], function($value,$key) use(&$result,&$where){ $result[]=array($value,$where["date"][$key]);});print_r($result);解决方案3:在这里我们使用array_shifton $where["date"]。<?phpini_set('display_errors', 1);$result=array();$where = array('id'=>array(12,13,14),'date'=>array('1999-06-12','2000-03-21','2006-09-31'));foreach($where["id"] as $value){ $result[]=array($value, array_shift($where["date"]));}print_r($result);
qq_花开花谢_0
想看花哨的把戏吗?(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有价值的占位元素的生成。