php中关联数组的类或函数

php中关联数组的类或函数,php,Php,我有两个类似的函数,但它们返回数组结果的方式不同: search..($user) { return array( "name" => $name, "age"=> $age); } 第二点: search..($user) { return array( "firstname" => $name, "myage"=> $age); } 有没有办法编写一个类或任何东西,使它们成为一个函数或类似的东西?像这样的因式分解怎么样: search..($use

我有两个类似的函数,但它们返回数组结果的方式不同:

search..($user) {
    return array( "name" => $name, "age"=> $age);
}
第二点:

search..($user) {
    return array( "firstname" => $name, "myage"=> $age);
}

有没有办法编写一个类或任何东西,使它们成为一个函数或类似的东西?

像这样的因式分解怎么样:

search..($user, $nametag, $agetag) {
    return array($nametag => $name, $agetag => $age);
}
然后调用如下函数:

$arr = search..($user, "name", "age");
$arr = search..($user, "firstname", "myage");
编辑 如果有许多参数,可以将它们封装在单个关联数组中,这样就不必担心长/分解方法签名:

search..($user, $tags) {
    return array($tags["name"] => $name, $tags["age"] => $age, ...);
}

$tags = array ("name" => "firstname", "age" => "myage", ...);
$arr = search..($user, $tags);
我看不到其他更干净的选择。。如果你不喜欢标签上的开销,我会考虑重新设计你的逻辑流程。 编辑2 您可以将映射逻辑封装在类中:

<?php

// classe de base, avec des propriétés et des méthodes membres
class UserSearch {

   var $tagMapping;

   var $name;
   var $age;
   var ...

   function UserSearch ($tagMapping) 
   {
       $this->tagMapping = $tagMapping;
   }

   function search($user, $tags)
   {
       return array($this->tagMapping["name"] => $this->name, 
                    $this->tagMapping["age"] => $this->age,
                    ...);
   }

}

?>

使用第二个参数创建函数。 此参数将用于设置返回格式

例如:

function search($user, $format)
{
  if ( $format == 'me' )
    return array( "firstname" => $name, "myage"=> $age);
  else
    return array( "name" => $name, "age"=> $age);
}

不要将java标记添加到php问题中。可能还应该添加第三个参数$agetag。@Grimbode我在编辑答案时阅读了您的评论。你说得对,我一眼就看不到了,谢谢。是的,但是如果我有大约20个参数,在一个函数中添加20个参数没有任何意义,我想让它更高效、更可靠clean@GoodD,根据修改答案有没有办法为此编写一个类?原因是什么-1?我同意如果有人投了反对票,他们应该留下评论,说明他们为什么投了反对票。