4

是否有一些创新的方法可以使“打印”更短而不会造成太多混乱?你最喜欢哪个“印刷品”?

define('_','_');
function _j($a, $b) {
    return $a._.$b;
}

// Output 0_0
print (0)._.(0);
print _j(0,0);

更新

我想要做的是将 Python/Ruby 中的切片语法转换为 PHP,例如。

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

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

4

5 回答 5

5

如果你打算消除混淆,你真的不应该编写这样的代码,因为它离混淆只有一步之遥。

于 2010-08-12T08:37:27.163 回答
1

你想让我做什么?连接字符串?使用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);

但请注意,浮点精度可能存在问题。使用引号有什么问题?两个多余的字符还不错。

于 2010-08-12T08:36:00.863 回答
1

由于它是 PHP,因此您可以使用 echo 而不是 print 来缩短它。

于 2010-08-12T08:36:37.600 回答
1

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

比较

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

我不完全确定你的目标是什么。

于 2010-08-12T08:37:10.940 回答
0

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

echo "0_0";
于 2010-08-12T08:57:54.837 回答