小编Wol*_*gel的帖子

PHP数组比较算法

在尝试模拟一些PHP行为时,我偶然发现了这个:

    $a=array(0 => 1, 'test' => 2);
    $b=array('test' => 3, 0 => 1);
    var_dump($a==$b, $a>$b, $b>$a);
Run Code Online (Sandbox Code Playgroud)

根据输出var_dump $b大于$a.在PHP手册中有一个标准数组比较转录,它表明数组的值是逐个比较的,如果第二个数组中缺少第一个数组的键,则数组是无法比较的.到现在为止还挺好.但是,如果我尝试这个(仅改变第一个元素$a):

    $a=array(0 => 2, 'test' => 2);
    $b=array('test' => 3, 0 => 1);
    var_dump($a==$b, $a>$b, $b>$a);
Run Code Online (Sandbox Code Playgroud)

所有三个比较结果都是false.这看起来对我来说>是"无法比拟的"(因为结果与结果相同<,而数组也不==是,这没有任何意义),但这不符合PHP手册的转录.这两个键都出现在两个数组中,我希望$a这次更大,因为键0的内容更大$a(2比1).

我试图挖掘到PHP源代码,发现zend_hash_compare()zend_hash.c,但代码似乎有工作的手册描述.

这里发生了什么?

php arrays

17
推荐指数
2
解决办法
911
查看次数

在不使用赋值的情况下使用var声明JavaScript中的变量会消耗内存吗?

在对象的实例中,我喜欢使用闭包机制来模拟私有成员变量.对于潜在的大量创建对象,我不需要一些私有成员,但是我必须声明它们才能在闭包中使用它们,例如"one","two"和"three":

    var obj=function()
    {
        var one;
        var two;
        var three;

        var M=function()
        {
            one=5;
        };
    };
Run Code Online (Sandbox Code Playgroud)

(不要介意这实际上不是我的设置的一个工作示例,只是为了演示使用M的三个变量的闭包)

var语句本身是否已经消耗了内存,或者这取决于实际为这些变量分配一些东西,比如"one"?

javascript

8
推荐指数
2
解决办法
3178
查看次数

标签 统计

arrays ×1

javascript ×1

php ×1