php中的关联数组的类或函数

时间:2014-11-21 09:18:15

标签: php

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

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

和第二个:

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

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

2 个答案:

答案 0 :(得分:1)

如何分解这样:

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);

我没有看到其他更清晰的选项..如果您不喜欢标签开销,我会考虑重新设计您的逻辑流程。

EDIT2

您可以将映射逻辑封装在类中:

<?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,
                    ...);
   }

}

?>

答案 1 :(得分:0)

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

示例:

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