是否有一些创新方法可以缩短“印刷”时间而不会产生太多混淆?您最喜欢哪种“印刷品”?
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)]
这太长了。< / p>
答案 0 :(得分:5)
如果你打算消除混淆,你真的不应该写这样的代码,因为它是一个没有混淆的步骤。
答案 1 :(得分: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);
但请注意,浮点精度可能存在问题。
虽然使用引号有什么问题?两个额外的角色也不错。
答案 2 :(得分:1)
由于它是PHP,你可以通过使用echo而不是print来缩短它。
答案 3 :(得分:1)
直接的方法很有效。
比较
print "0_0";
print _j(0,0);
我不完全确定你的目标是什么。
答案 4 :(得分:0)
这是最短且非混淆的方式:p
echo "0_0";