PHP将关联数组从一个函数传递到另一个函数,保持键不变
我有两个函数和一个数组 函数组件BuildRoute和$query { $page=; $segments=数组PHP将关联数组从一个函数传递到另一个函数,保持键不变,php,arrays,associative-array,Php,Arrays,Associative Array,我有两个函数和一个数组 函数组件BuildRoute和$query { $page=; $segments=数组 //PAGE if(isset($query["page"])){ $page = $query["page"]; unset($query["page"]); } else { $page = "front"; } //USERID if(isset($query["userid"])){ $segments["userid"] = $query[
//PAGE
if(isset($query["page"])){
$page = $query["page"];
unset($query["page"]);
} else {
$page = "front";
}
//USERID
if(isset($query["userid"])){
$segments["userid"] = $query["userid"];
unset($query["userid"]);
}
//OPTION
if(isset($query["option"])){
$segments["option"] = $query["option"];
unset($query["option"]);
}
//CATID
if(isset($query["catid"])){
$segments["catid"] = $query["catid"];
$category_alias = getCategoryTitle($query["catid"]);
$segments["category_alias"] = $category_alias;
unset($query["catid"]);
}
// Get the active menu item.
$menu = &JSite::getMenu();
$item = &$menu->getActive();
$vars["Itemid"] = $item -> id;
//OPTION
if(isset($segments["option"])){
$vars["option"] = $segments["option"];
}
//CATID
if(isset($segments["catid"])){
$vars["catid"] = $segments["catid"];
}
//$adid
if(isset($segments["adid"])){
$vars["adid"] = $segments["adid"];
}
switch($segments["page"]){
//?page="show_profile",$userid,$option
case "mostrar_perfil":
$vars["page"] = "show_profile";
break;
//page?"show_search",$catid,$option
case "mostrar_busqueda":
$vars["page"] = "show_search";
break;
//case show_category
//may use $catid,$option,$expand,$text_search,$order,$limitstart,$plugins
case "mostrar_categoria":
$vars["page"] = "show_category";
break;
//case "show_rules",$option
case "mostrar_reglas":
$vars["page"] = "show_rules";
break;
//case "show_ad",$adid,$option,$plugins
case "mostrar_clasificado":
$vars["page"] = "show_ad";
break;
}
echo "VARS 2: <pre>";
print_r($vars);
echo "</pre>";
return $vars;
切换$page{
//page?"show_search",$catid,$option
case "show_search":
$segments["page"] = "mostrar_busqueda";
break;
//case "show_category",$catid,$option,$expand,$text_search,$order,$limitstart,$plugins
case "show_category":
$segments["page"] = "mostrar_categoria";
break;
//case "show_rules",$option)
case "show_rules":
$segments["page"] = "mostrar_reglas";
break;
//case "show_ad",$adid,$option,$plugins
case "show_ad":
$segments["page"] = "mostrar_clasificado";
break;
}
返回$segments
}
/**
*解析路由的方法
*@param数组$segments
*/
函数componentParseRoute$段
{
$vars=数组
//PAGE
if(isset($query["page"])){
$page = $query["page"];
unset($query["page"]);
} else {
$page = "front";
}
//USERID
if(isset($query["userid"])){
$segments["userid"] = $query["userid"];
unset($query["userid"]);
}
//OPTION
if(isset($query["option"])){
$segments["option"] = $query["option"];
unset($query["option"]);
}
//CATID
if(isset($query["catid"])){
$segments["catid"] = $query["catid"];
$category_alias = getCategoryTitle($query["catid"]);
$segments["category_alias"] = $category_alias;
unset($query["catid"]);
}
// Get the active menu item.
$menu = &JSite::getMenu();
$item = &$menu->getActive();
$vars["Itemid"] = $item -> id;
//OPTION
if(isset($segments["option"])){
$vars["option"] = $segments["option"];
}
//CATID
if(isset($segments["catid"])){
$vars["catid"] = $segments["catid"];
}
//$adid
if(isset($segments["adid"])){
$vars["adid"] = $segments["adid"];
}
switch($segments["page"]){
//?page="show_profile",$userid,$option
case "mostrar_perfil":
$vars["page"] = "show_profile";
break;
//page?"show_search",$catid,$option
case "mostrar_busqueda":
$vars["page"] = "show_search";
break;
//case show_category
//may use $catid,$option,$expand,$text_search,$order,$limitstart,$plugins
case "mostrar_categoria":
$vars["page"] = "show_category";
break;
//case "show_rules",$option
case "mostrar_reglas":
$vars["page"] = "show_rules";
break;
//case "show_ad",$adid,$option,$plugins
case "mostrar_clasificado":
$vars["page"] = "show_ad";
break;
}
echo "VARS 2: <pre>";
print_r($vars);
echo "</pre>";
return $vars;
如何将整个数组传递给第二个函数、键及其值
function A (){
$segments = array();
$segments['word']=$var1;
$segments['word2']=$var2;
$segments['word3']=$var3;
return $segments;
}
function B ($segments){
$someVar=$segments['word'];
$someVar1=$segments['word'];
$someVar2=$segments['word'];
$vars['other_stuff']...
return $vars;
}
$arr = a();
$barr = b($arr);
由于查询可能并不总是包含word1或word2,因此我认为需要通过键指定所引用的值
谢谢,使用array\u keys函数。它将从给定的关联数组返回一个键数组。我很难理解您想要什么,但我已经做到了 这将是解决方案
function A(){
$segments = array();
$segments['word'] = 'var1';
$segments['word2'] = 'var2';
$segments['word3'] = 'var3';
return $segments;
}
我不太明白您想要实现什么,因为您的问题有点不清楚,您提供的代码也不正确,但鉴于以下函数a,我将尝试给出一些您可能需要的示例:
function B(){
$segments = A();
// Do whatever you need with the $segments here
}
选项1从函数B调用函数A:
选项2将返回的数组从函数A传递到函数B:
选项3将函数A返回的单个值传递给函数B:
如果你能澄清你的问题并准确地告诉我们你想要完成什么,那么我们可能会更好地帮助你。我不明白。你能澄清你的问题,格式化你的代码,并澄清这些函数在做什么以及如何使用它们吗?你没有把任何东西传递给B…我已经发布了真正的代码,对不起f在Sarah之前,我已经编辑了这个问题。我没有发布正确的问题。这仍然毫无意义。你能举一个例子说明你是如何调用函数B的,以及你传递给它的是什么吗?另外,你在函数中引用了$var、$var1、$var2和$vars,但是你没有将它们设置在任何一个可以从p开始的地方产生一个未定义的变量通知。你能清理你的代码以提供我们可以使用的真实示例吗?profitphp我编辑了问题b/c我没有清楚地解释我自己。你能看一下吗?Breeze,我编辑了问题b/c我对我想完成的事情做了一个糟糕的解释。你能看一下吗?
function B($segments){
// Do whatever you need with the $segments here
}
$segments = A();
B($segments);
function B($var1, $var2){
// Do whatever you need with the $var1 and $var2
}
$segments = A();
B($segments['word'], $segments['word2']);