Well.. I'm a bit perplexed. I would've thought that the answer would be to use [man]array_walk/man to apply [man]ksort/man to each sub-array, but I can't for the life of me figure out why I'm getting the results I'm getting.
Test script:
$test = array(
array('key' => 'value1', 'this' => 'value2', 'word' => 'value3', 'blah' => 'value4', 'foo' => 'value5', 'bar' => 'value6'),
array('key' => 'value1', 'this' => 'value2', 'word' => 'value3', 'blah' => 'value4', 'foo' => 'value5', 'bar' => 'value6')
);
array_walk($test, 'ksort');
print_r($test);
Output:
Array
(
[0] => Array
(
[bar] => value6
[blah] => value4
[foo] => value5
[key] => value1
[this] => value2
[word] => value3
)
[1] => Array
(
[foo] => value5
[bar] => value6
[blah] => value4
[word] => value3
[this] => value2
[key] => value1
)
)
For whatever reason, the $test[1] array isn't being sorted properly. What's more is that you can add any variable number of similar arrays, e.g.:
$test = array(
array('key' => 'value1', 'this' => 'value2', 'word' => 'value3', 'blah' => 'value4', 'foo' => 'value5', 'bar' => 'value6'),
array('key' => 'value1', 'this' => 'value2', 'word' => 'value3', 'blah' => 'value4', 'foo' => 'value5', 'bar' => 'value6'),
array('key' => 'value1', 'this' => 'value2', 'word' => 'value3', 'blah' => 'value4', 'foo' => 'value5', 'bar' => 'value6'),
array('key' => 'value1', 'this' => 'value2', 'word' => 'value3', 'blah' => 'value4', 'foo' => 'value5', 'bar' => 'value6'),
array('key' => 'value1', 'this' => 'value2', 'word' => 'value3', 'blah' => 'value4', 'foo' => 'value5', 'bar' => 'value6'),
array('key' => 'value1', 'this' => 'value2', 'word' => 'value3', 'blah' => 'value4', 'foo' => 'value5', 'bar' => 'value6')
);
and all of the arrays - except the one in $test[1] will be sorted correctly:
Array
(
[0] => Array
(
[bar] => value6
[blah] => value4
[foo] => value5
[key] => value1
[this] => value2
[word] => value3
)
[1] => Array
(
[foo] => value5
[bar] => value6
[blah] => value4
[word] => value3
[this] => value2
[key] => value1
)
[2] => Array
(
[bar] => value6
[blah] => value4
[foo] => value5
[key] => value1
[this] => value2
[word] => value3
)
[3] => Array
(
[bar] => value6
[blah] => value4
[foo] => value5
[key] => value1
[this] => value2
[word] => value3
)
[4] => Array
(
[bar] => value6
[blah] => value4
[foo] => value5
[key] => value1
[this] => value2
[word] => value3
)
[5] => Array
(
[bar] => value6
[blah] => value4
[foo] => value5
[key] => value1
[this] => value2
[word] => value3
)
)
Unless anyone here would care to explain why, I'm about ready to open a bug report over at php.net!