public static function columnOrder(array $columns, array $array)
{
if (!$columns) {
return $array;
}
$keys = array_fill_keys($columns, null);
$keyed = array_intersect_key($array, $keys);
$arrayLeftover = array_diff_key($array, $keyed);
$keysLeftover = array_diff_key($keys, $keyed);
$target = array();
if ($keysLeftover) {
foreach ($arrayLeftover as $key => $value) {
if (is_string($key)) {
continue;
}
$target[key($keysLeftover)] = $value;
unset($arrayLeftover[$key]);
next($keysLeftover);
if (null === key($keysLeftover)) {
break;
}
}
}
$result = array_merge($keys, $keyed, $keysLeftover, $target, $arrayLeftover);
return $result;
}
/** * @param bool $ignoreDataUpdate * @param array $headers * @param int $errorCount * @return array */ private function getModuleTable($ignoreDataUpdate, array $headers, &$errorCount) { $errorCount = 0; $table = array(); foreach ($this->getMagentoModuleList() as $name => $module) { $row = $this->mapModuleToRow($name, $module, $ignoreDataUpdate, $errorCount); if ($ignoreDataUpdate) { unset($row['Data']); } $table[] = ArrayFunctions::columnOrder($headers, $row); } return $table; }