PHP如何将foreach循环获取的多个数组合并为单一数组?
合并多维数组成单一数组的解决方案
嘿,我来帮你搞定这个数组合并的问题!从你的代码和给出的结果来看,你现在通过foreach循环得到的$userApprovalDat是一个包含两个子数组的二维数组,而你想要的是把这两个子数组里的所有元素整合到一个单一的一维数组里,对吧?
这里有几种简单的实现方式:
方法一:在循环过程中直接合并
你可以修改循环里的赋值逻辑,不用把每个子数组直接push到结果数组,而是用array_merge()每次将新获取的数组合并到结果中:
$userApprovalDat = []; foreach ($productInformation as $proInfo) { // 每次将方法返回的数组合并到结果数组 $userApprovalDat = array_merge( $userApprovalDat, UserProduct::userPendingApprovalList($proInfo->product_id, $id) ); }
这样循环结束后,$userApprovalDat就是包含所有元素的一维数组,不用再做后续处理。
方法二:合并已有的二维数组
如果你已经得到了现在的$userApprovalDat(也就是包含两个子数组的数组),可以用下面的方式快速合并:
方式A:使用call_user_func_array(兼容PHP 5.6以下版本)
$mergedArray = call_user_func_array('array_merge', $userApprovalDat);
方式B:使用展开运算符(PHP 5.6+推荐)
$mergedArray = array_merge(...$userApprovalDat);
这两种方式都会把$userApprovalDat里的所有子数组合并成一个单一数组,最终结果就是你想要的包含5条数据的数组。
另外要注意:如果UserProduct::userPendingApprovalList()可能返回空数组,这些方法也能正常处理,不会出现错误哦。
内容的提问来源于stack exchange,提问作者Javed
相关产品推荐
相关产品推荐

