Everything depends what functionality you need.
If you simple want to display value for key your code should look like:
Smarty modifier:
function smarty_modifier_user_display($member, $field="name")
{
// sql searching user
$user = array("name" => 'XXX', "id" => $member.'222', "email" => 'my@example.com');
return $user[$field];
}
Smarty template file:
{assign var=member value="3"}
{$member|user_display}
{$member|user_display:"name"}
{$member|user_display:"id"}
{$member|user_display:"email"}
But when you have modifier as you showed:
function smarty_modifier_user_display($member)
{
// sql searching user
$user = array("name" => 'XXX', "id" => $member.'222', "email" => 'my@example.com');
return $user;
}
Smarty template file should look like this:
{assign var=member value="3"}
{assign var=my_user value = $member|user_display}
{$my_user.name}
{$my_user.id}
{$my_user.email}
You should of course be careful when using modifier - I don't know from what source you get data for your user. But if you do it from database, you shouldn't query database each time because when you launch modifier a couple of times, your database will be unnecessary queried multiple times instead of one.