Ordenar una matriz asociativa en php con condición múltiple

Considere la siguiente matriz

    $details = array( 
 array('lname'=>'A', 'fname'=>'P','membkey'=>700,'head'=>'y'),
 array('lname'=>'B', 'fname'=>'Q','membkey'=>540,'head'=>'n'),
 array('lname'=>'C', 'fname'=>'R','membkey'=>700,'head'=>'n'),
 array('lname'=>'D', 'fname'=>'S','membkey'=>540,'head'=>'y'),
 array('lname'=>'E', 'fname'=>'T','membkey'=>700,'head'=>'n')
    );

Aquí me gustaría ordenar con cabeza y membkey. El elemento superior del mismo elemento membkey debe tener 'head = y' y hacer eco como,

    $details = array( 
 array('lname'=>'A', 'fname'=>'P','membkey'=>700,'head'=>'y'),
 array('lname'=>'E', 'fname'=>'T','membkey'=>700,'head'=>'n'),
 array('lname'=>'C', 'fname'=>'R','membkey'=>700,'head'=>'n'),
 array('lname'=>'D', 'fname'=>'S','membkey'=>540,'head'=>'y'),
 array('lname'=>'B', 'fname'=>'Q','membkey'=>540,'head'=>'n')
    );

Lo intenté de la siguiente manera

    function orderbymemberKey( $a, $b ){
    if ( $a[membkey] == $b[membkey] )
        return 0;
    return($a[membkey] < $b[membkey] )? -1 :1;
 }
 usort( $details, orderbymemberKey );
and it successfully order by membkey.

Cualquier sugerencia por favor.

Respuestas a la pregunta(4)

Su respuesta a la pregunta