PHP将关联数组从一个函数传递到另一个函数,保持键不变

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[

我有两个函数和一个数组

函数组件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["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']);