代码之家  ›  专栏  ›  技术社区  ›  Codler

假数组切片运算符:使其变短

  •  4
  • Codler  · 技术社区  · 14 年前

    有没有什么创新的方法可以让“打印”变得更短而不太混乱?你最喜欢哪种“印刷品”?

    define('_','_');
    function _j($a, $b) {
        return $a._.$b;
    }
    
    // Output 0_0
    print (0)._.(0);
    print _j(0,0);
    

    如。

    a[1:3]
    a[1,3]
    a[1..3]
    

    要将其转换为PHP,您需要这样引用 $a["1:3"] ($a是一个带有ArrayAccess接口的类)所以我在想是否还有其他方法, $a[(0)._.(0)] 这太长了。

    5 回复  |  直到 14 年前
        1
  •  1
  •   knittl    14 年前

    你想做什么?连接字符串?使用 implode

    echo implode('_', array(0, 0));
    

    不短,但肯定少混乱,更可读性和它最好的传达意图


    您有一个实现ArrayAccess接口的类。

    为什么不使用十进制数来实现切片操作符呢?

     $a = new PythonArray(array(1, 2, 3, 4, 5));
     $b = $a[1.3];
    

    然后,您应该能够将数字转换为字符串并按句点拆分。你也可以用 floor array_slice :

     list($start, $len) = explode('.', (string)$offset);
     return array_slice($internal_array, $start, $len);
    

    但是请注意,浮点精度可能有问题。 但是用引号有什么问题?多出两个字符也不错。

        2
  •  5
  •   bcosca    14 年前

        3
  •  1
  •   signine    14 年前

        4
  •  1
  •   haydenmuhl    14 年前

    直截了当的方法效果很好。

    比较

    print "0_0";
    print _j(0,0);
    

    我不太清楚你的目标是什么。

        5
  •  0
  •   Dr Casper Black    14 年前

    这是最短且不易混淆的方法:p

    echo "0_0";