参考正在将项目添加到数组

从我的草坪上离开

我有以下方法,您可以在其中传递项目列表,第一个项目是要查看其是否存在的项目,而以下项目是项目的路径。

在下面的代码中,我有2条print_r语句,一条在之前for,另一条在之后。

public function exists(){
    $keys  = func_get_args();
    $value = array_shift($keys);

    $ref = &$_SESSION;
    print_r($_SESSION);
    for($x = 0; $x < sizeof($keys); $x++){
        $ref = &$ref[$keys[$x]];
    }
    print_r($_SESSION);
    if(!is_array($ref)){
        unset($ref);
        return false;
    }
    $found = in_array($value, $ref);
    unset($ref);
    return $found;
}

当我这样称呼它时:

$obj->exists(123, "cart");

我从那些获得这两个数组print_r

Array
(
    [id] => 1
    [email] => [email protected]
    [user] => TheColorRed
    [first] => Billy
    [last] => Bob
    [ZingLoggedIn] => 1
)
Array
(
    [id] => 1
    [email] => [email protected]
    [user] => TheColorRed
    [first] => Billy
    [last] => Bob
    [ZingLoggedIn] => 1
    [cart] => 
)

我的问题是,为什么将它添加cart到数组中?它应该只检查它是否存在。

杰克

这是在数组元素上使用引用的副作用。如果元素不存在,则会创建它。unset()事后并没有改变这一点。考虑不使用引用;由于您只读取值,因此不应进行写时复制:

public function exists()
{
    $keys  = func_get_args();
    $value = array_shift($keys);

    $ref = $_SESSION;
    foreach ($keys as $key) {
        if (!isset($ref[$key])) {
            return false;
        }
        $ref = $ref[$key];
    }
    return is_array($ref) && in_array($value, $ref);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

参考正在将项目添加到数组

来自分类Dev

将项目添加到Angular数组

来自分类Dev

将项目添加到数组Swift

来自分类Dev

无法将项目添加到数组

来自分类Dev

将秒数组添加到参考日期时间

来自分类Dev

如何将项目添加到数组列表的数组

来自分类Dev

如何将项目添加到数组列表的数组

来自分类Dev

将新项目添加到对象数组

来自分类Dev

使用索引将项目添加到新数组

来自分类Dev

以适当的顺序将项目添加到数组

来自分类Dev

Java将项目作为数组添加到类中

来自分类Dev

将项目添加到IF条件语句数组中

来自分类Dev

如何将单个项目添加到numpy数组

来自分类Dev

将项目添加到每个子数组python

来自分类Dev

将数组中的项目添加到Web表单

来自分类Dev

将项目添加到数组时视图不会更新

来自分类Dev

在JavaScript中按键将项目添加到数组

来自分类Dev

使用MongoDB将新项目添加到数组

来自分类Dev

遍历数组以将每个项目添加到parentNode

来自分类Dev

将 JSON 数组添加到 DynamoDB 项目

来自分类Dev

如果条件将所有项目添加到数组

来自分类Dev

使用 for 循环将项目添加到数组 Laravel

来自分类Dev

将项目从 JSON 数组添加到列表

来自分类Dev

将项目添加到数组中 - 单独

来自分类Dev

将Bing Maps参考添加到Windows Phone 8.1项目

来自分类Dev

如何将.NET dll参考添加到UWP项目?

来自分类Dev

将Scribus参考添加到Visual Studio 2019 Python项目

来自分类Dev

WPF将项目添加到可观察的集合并打印。返回对象参考错误

来自分类Dev

将数组添加到数组中