Allow the user to permit per role to view of any/all profile2 fields
Instead you can try Profile2 Privacy module, It will do your requirement exactly.


  This module extends Profile 2 by allowing administrators to create
  privacy levels as predefined groups or sets of profile fields on a per
  role basis. Users can then select from among the privacy levels to
  apply access control to their profile.
  
  For each role, select the profile fields that are visible to users in
  that role, when the profile owner has selected this role. For example,
  if you created an “authenticated users only” privacy level, you might
  set the anonymous role to view first and last name fields, the
  authenticated role to see first name, last name and contact fields
  and an admin role to see all fields.