java代碼轉PHP代碼,高手進
import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class ArrayAssemble {@SuppressWarnings("unchecked")public static void main(String[] args) {String[] arrOfInt = { "紅", "橙", "黃","黑" };@SuppressWarnings("unused")String[] arrOfChar1 = { "L", "XL" };@SuppressWarnings("unused")String[] arrOfChar2 = { "麻", "晴綸","看" };String[] arrOfChar3 = { "奎", "康" }; String[] arrOfStr = { "lmy", "lyb", "mz", "yx" };System.out.println("以下是組合後的數組");//Object[][] objectsArrays = assembleArraysToPlanerArray(new Object[][] {arrOfInt, arrOfChar1, arrOfChar2, arrOfChar3,arrOfStr });Object[][] objectsArrays = assembleArraysToPlanerArray(new Object[][] { arrOfChar1,arrOfChar2, arrOfChar3 });//Object[][] objectsArrays = assembleArraysToPlanerArray(new Object[][] { arrOfChar1,arrOfChar2 });int i = 0;for (Object[] objArrays : objectsArrays) {i++;System.out.println(i + "=" + Arrays.toString(objArrays));}}// 方法一的輔助方法:將一個數群組類型或物件類型的List與數組組合,並返回List@SuppressWarnings("unchecked")public static List assembleArrayToList(List aList, Object[] array) {List arrList = new ArrayList();// 遍曆aList,將array與aList進行組合for (int i = 0; i < aList.size(); i++) {Object obj = aList.get(i);// 檢查aList的元素是否是數群組類型的,如果不是,則直接產生組合列表if (obj instanceof Object[]) {Object[] listArr = (Object[]) obj;// 對數群組類型的aList元素與array進行組合for (int k = 0; k < array.length; k++) {Object[] newListArr = new Object[listArr.length + 1];for (int j = 0; j < listArr.length; j++) {newListArr[j] = listArr[j];}newListArr[listArr.length] = array[k];arrList.add(newListArr);}} else {// 對非數群組類型的aList元素與array進行組合for (int j = 0; j < array.length; j++) {Object[] arrObj = { aList.get(i), array[j] };arrList.add(arrObj);}}}return arrList;}// 方法二:使用二維數組參數方法返回組合的二維數群組類型,並使用了遞迴@SuppressWarnings("unchecked")public static Object[][] assembleArraysToPlanerArray(Object[][] objectArrays) {if (objectArrays.length == 2) {Object[] assembledArray = objectArrays[0];Object[] array = objectArrays[1];return assembleArrayToArray(assembledArray, array);} else if (objectArrays.length <= 1) {return objectArrays;} else {Object[] objArray = objectArrays[objectArrays.length - 1];objectArrays = Arrays.copyOf(objectArrays, objectArrays.length - 1);return assembleArrayToArray(assembleArraysToPlanerArray(objectArrays), objArray);}}// 方法二的輔助方法:將一個數群組類型或二維數群組類型與數組組合,並返回二維數組public static Object[][] assembleArrayToArray(Object[] assembledArray,Object[] array) {int lenAssArray = assembledArray.length;int lenArray = array.length;Object[][] objArrays = new Object[lenAssArray * lenArray][];for (int i = 0; i < lenAssArray; i++) {Object obj = assembledArray[i];if (obj instanceof Object[]) {Object[] objArr = (Object[]) obj;int lenObjArr = objArr.length;for (int k = 0; k < lenArray; k++) {// 複製objArr數組到newListArr數組,並將其長度加一Object[] newListArr = Arrays.copyOf(objArr, lenObjArr + 1);// 將array數組的第k+1元素賦值給newListArr數組最後的元素,並將newListArr賦值給objArrays數組的第k+1個元素newListArr[lenObjArr] = array[k];objArrays[lenArray * i + k] = newListArr;}} else {for (int j = 0; j < lenArray; j++) {Object[] newObjArray = { obj, array[j] };objArrays[lenArray * i + j] = newObjArray;}}}return objArrays;}}