php usort()具有json排序的优先顺序

I need to sort a json array with key value pair in a certain order of precedence(specialcharacters > numbers > lower case > uppercase). I tried with ascii code but couldn't get as expected.

$arr1 = array (
  0 => 
  array (
    'id' => 1,
    'name' => 'B',
    'value' => 'abc',
    'order' => 6,
  ),
  1 => 
  array (
    'id' => 2,
    'name' => 'a',
    'value' => 'xyz',
    'order' => 2,
  ),
  2 => 
  array (
    'id' => 3,
    'name' => 'A',
    'value' => 'ghi',
    'order' => 1,
  ),
  3 => 
  array (
    'id' => 4,
    'name' => '123',
    'value' => 'xyz',
    'order' => 2,
  ),
  4 => 
  array (
    'id' => 5,
    'name' => 'd',
    'value' => 'uvw',
    'order' => 3,
  ),
  5 => 
  array (
    'id' => 6,
    'name' => '@2',
    'value' => 'def',
    'order' => 3,
  ),
);
function cmp($a, $b)
{
    $at = iconv('UTF-8', 'ASCII//TRANSLIT', $a['name']);
    $bt = iconv('UTF-8', 'ASCII//TRANSLIT', $b['name']);
    return strcmp($at, $bt);
}
usort($arr1, "cmp");
print_r($arr1);

Can anyone help me to resolve it?

<?php
// Obtain a list of columns
foreach ($arr1 as $key => $row) {
    $arr1[$key]  = $row['value'];
}

ksort($arr1); ?>