$key)) {\n"; $code .= " asort(\$a->$key);\n"; $code .= " \$aa = array_shift(\$a->$key);\n"; $code .= " } else\n"; $code .= " \$aa = \$a->$key;\n"; $code .= " if (is_array(\$b->$key)) {\n"; $code .= " asort(\$b->$key);\n"; $code .= " \$bb = array_shift(\$b->$key);\n"; $code .= " } else\n"; $code .= " \$bb = \$b->$key;\n"; $code .= " if (\$aa != \$bb)"; if ($rev) $code .= " return (\$aa < \$bb ? 1 : -1);\n"; else $code .= " return (\$aa > \$bb ? 1 : -1);\n"; $code .= "} else {\n"; $code .= " \$a = array_change_key_case(\$a);\n"; $code .= " \$b = array_change_key_case(\$b);\n"; $key = strtolower($key); $code .= " if ((! isset(\$a['$key'])) && isset(\$b['$key'])) return 1;\n"; $code .= " if (isset(\$a['$key']) && (! isset(\$b['$key']))) return -1;\n"; $code .= " if ((isset(\$a['$key'])) && (isset(\$b['$key']))) {\n"; $code .= " if (is_array(\$a['$key'])) {\n"; $code .= " asort(\$a['$key']);\n"; $code .= " \$aa = array_shift(\$a['$key']);\n"; $code .= " } else\n"; $code .= " \$aa = \$a['$key'];\n"; $code .= " if (is_array(\$b['$key'])) {\n"; $code .= " asort(\$b['$key']);\n"; $code .= " \$bb = array_shift(\$b['$key']);\n"; $code .= " } else\n"; $code .= " \$bb = \$b['$key'];\n"; $code .= " if (\$aa != \$bb)\n"; $code .= " if (is_numeric(\$aa) && is_numeric(\$bb)) {\n"; if ($rev) $code .= " return (\$aa < \$bb ? 1 : -1);\n"; else $code .= " return (\$aa > \$bb ? 1 : -1);\n"; $code .= " } else {\n"; if ($rev) $code .= " if ( (\$c = strcasecmp(\$bb,\$aa)) != 0 ) return \$c;\n"; else $code .= " if ( (\$c = strcasecmp(\$aa,\$bb)) != 0 ) return \$c;\n"; $code .= " }\n"; $code .= " }\n"; $code .= "}\n"; } $code .= 'return $c;'; $MASORT_CACHE[$sortby] = create_function('$a, $b',$code); } uasort($data,$MASORT_CACHE[$sortby]); } } ?>