function createOptionsVariantsArrayBySelectedInfo($startArray, $selectedOptionsVariantsArray, $mainOptions, $finalArray = array()) { foreach ($mainOptions as $mainOption) { if ($selectedOptionsVariantsArray[$mainOption]) { if (is_array($finalArray[$mainOption]) && !empty($finalArray[$mainOption])) { array_push($finalArray[$mainOption], array_keys($startArray[$mainOption])); } else { $finalArray[$mainOption][] = array_keys($startArray[$mainOption]); } if ($startArray[$mainOption][$selectedOptionsVariantsArray[$mainOption]] && is_array($startArray[$mainOption][$selectedOptionsVariantsArray[$mainOption]])) { $arrKeys = array(); foreach ($startArray[$mainOption][$selectedOptionsVariantsArray[$mainOption]] as $recursiveKey => $elements) { if (!in_array($selectedOptionsVariantsArray[$recursiveKey], array_keys($elements))) { if (empty($arrKeys)) { $newSelectedVariantsArray = $selectedOptionsVariantsArray; $arrKeys = array_keys($elements); $newSelectedVariantsArray[$recursiveKey] = $elements[$arrKeys[0]]; } } else { $newSelectedVariantsArray = $selectedOptionsVariantsArray; } $newMainOptions[$recursiveKey] = $recursiveKey; } $finalArray = createOptionsVariantsArrayBySelectedInfo($startArray[$mainOption][$selectedOptionsVariantsArray[$mainOption]], $newSelectedVariantsArray, $newMainOptions, $finalArray); } } } return $finalArray; }
function createOptionsVariantsArrayBySelectedInfo($startArray, $selectedOptionsVariantsArray, $finalArray = array()) { foreach ($startArray as $key1 => $element1) { if ($selectedOptionsVariantsArray[$key1]) { if (is_array($finalArray[$key1]) && !empty($finalArray[$key1])) { array_push($finalArray[$key1], array_keys($element1)); } else { $finalArray[$key1][] = array_keys($element1); } if (is_array($element1[$selectedOptionsVariantsArray[$key1]])) { $finalArray = createOptionsVariantsArrayBySelectedInfo($element1[$selectedOptionsVariantsArray[$key1]], $selectedOptionsVariantsArray, $finalArray); } } } return $finalArray; }