Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过函数参数设置多维数组_Php_Arrays_Session - Fatal编程技术网

Php 通过函数参数设置多维数组

Php 通过函数参数设置多维数组,php,arrays,session,Php,Arrays,Session,我正在为我的框架开发一个简单的会话管理器。我正在尝试为会话数据设置一个更加用户友好的结构。基本上,我的会话是这样存储的: $app_name = "Some_App_Name"; $component = "notifications"; $key = "errors"; $value = "There was some error"; $_SESSION[$app_name][$component][$key] = $value; 我面临的问题是通过会话类中的参数创建此结构。我有一

我正在为我的框架开发一个简单的会话管理器。我正在尝试为会话数据设置一个更加用户友好的结构。基本上,我的会话是这样存储的:

 $app_name = "Some_App_Name";
 $component = "notifications";
 $key = "errors";
 $value = "There was some error";
 $_SESSION[$app_name][$component][$key] = $value;
我面临的问题是通过会话类中的参数创建此结构。我有一个set方法,理想情况下应该设置会话值。上面列出的$app_名称默认情况下是通过构造函数添加到会话类的,但是我需要找到一种简单的方法来获取在方法中传递的参数,然后创建其余的。一个简单的例子:

// Where keys could be: $key1 = notifications, $key2 => "notices"
public static function set($key1,$key2,$value) {
    $_SESSION[self::$app_name][$key1][$key2] = $value;
}
如果我总是有4个参数,但在某些情况下,我可能只有2个参数,那么上述方法就行了。我可以传递2个参数(都是数组),但我正在寻找一种更精简的方法(如果这种方法存在的话)

在创建结构和设置值时,我还需要一种类似的方法来验证值或最后一个键是否存在:

// Where keys could be: $key1 = notifications, $key2 => "errors"
public static function exists($key1,$key2) {
    if(isset($_SESSION[self::$app_name][$key1][$key2])) {
    return true;
}

如果您有任何建议,我们将不胜感激。

鉴于其他成员希望做类似的事情,我强烈建议您不要立即使用此概念。这听起来是个好主意,但您真正的问题在于阵列本身的管理。直接使用$\u SESSION superglobal确实是更强大的选择,因为:

$params = array(
    "key1" => "value1",
    "key2" => "value2",
    "value" => "value"
);

public static function set($params = NULL)  //default null if no value is passed
{
    if (!self::exists($params)) return false;

    $_SESSION[self::$app_name][$params["key1"]][$params["key2"]] = $value;
    return true;        

} 


public static function exists($params = NULL) 
{
    if(isset($_SESSION[self::$app_name][$params["key1"]][$params["key2"]])) 
    {
        return true;
    }
    return false;
}
  • 即使为服务器和组件($_SESSION['somename']['auth'])设置了一个参数,当您希望从对象的另一个实例访问该级别的内容时会发生什么?假设我有另一个会话对象实例用于$\u会话['somename']['errors'],但需要从$\u会话['somename']['auth']访问属性,但在范围内,会话数组中的my base不正确

  • 添加属性很好$this->session->add(“key”,“name”),但是如果您想附加到该数组(其中name实际上是一个数组,而不仅仅是一个值),或者反之亦然,该怎么办呢。或者如果$\u会话['somename']['auth']['key']['name']中实际有另一个键或值,则检查是否发生


在过去几天的工作中,我可以肯定地说,写一个“功能齐全”的会话管理器类,但为了简单起见,最好直接使用会话数组,因为它的代码更少,问题也更少。

问题是,我并不总是确定可能有多少个参数。我想创建一个函数来利用所有传递的参数(可以是1-1000个哈哈)并创建结构,最后一个参数作为值。