Version: 1

Type: Function

Category: Algorithms

Description: sorts arrays of the form: \$array_name[\$some_integer][\$some_key] by the 2nd key ("\$some_key") for example: \$userdata[1]["username"]

```/*
given an array (\$array), advanced_2Darray_sort will sort
an array of the following form:

\$array_name[\$some_integer][\$some_key]

by the second key (\$some_key)

executing is simple...

\$messy_array[0]["firstname"] = "john";
\$messy_array[0]["lastname"] = "smith";
\$messy_array[1]["firstname"] = "jeff";
\$messy_array[1]["lastname"] = "iscool";

now:
\$neat_array[0]["firstname"] = "jeff";
\$neat_array[0]["lastname"] = "iscool";
\$neat_array[1]["firstname"] = "john";
\$neat_array[1]["lastname"] = "smith";

this is really useful for sorting information that
will be displayed using a table.
*/

function sys_DataCompare (\$left, \$right)
{
if (\$left == "")
return(1);
elseif (\$right == "")
return(-1);
else
{
\$left = strtolower(\$left);
\$right = strtolower(\$right);
}

return(strcmp(\$left, \$right));
}

{
\$i = 0;
foreach (\$array[0] as \$key=>\$data)
{
\$sys_KEYLIST[\$i] = \$key;
\$i++;
}

//assemble all the arrays...
for (\$i = 0; \$i < count(\$sys_KEYLIST); \$i++)
{
\${\$sys_KEYLIST[\$i]} = array();

for (\$j = 0; \$j < count(\$array); \$j++)
\${\$sys_KEYLIST[\$i]}[\$j] = \$array[\$j][\$sys_KEYLIST[\$i]];
}

uasort(\${\$index_name}, "sys_DataCompare");

\$i = 0;
foreach (\${\$index_name} as \$sort_key=>\$junk)
{
for (\$j = 0; \$j < count(\$sys_KEYLIST); \$j++)
\$new_array[\$i][\$sys_KEYLIST[\$j]] = \${\$sys_KEYLIST[\$j][\$sort_key];

\$i++;
}

return(\$new_array);
}```