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?我同意如果有人投了反对票,他们应该留下评论,说明他们为什么投了反对票。