2010-08-12 50 views
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接口接口的類)所以,我在想,如果有一些otherways $a[(0)._.(0)]這是太長。

+1

+1可愛超載。 – BoltClock 2010-08-12 08:33:47

+0

讓它工作:) – 2010-08-12 08:39:12

+0

'$ a [「1:3」]'不會在PHP中切片數組。有['array_slice'](http://php.net/array_slice)雖然 – knittl 2010-08-12 09:02:22

回答

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); 

請注意,雖然浮點精度可能存在問題。 儘管使用引號有什麼問題?兩個額外的字符不是太糟糕。

+0

我覺得有報價是不一致的,但也許這是最好的選擇。 非常好的想法與小數! – Codler 2010-08-12 10:52:09

1

由於它是PHP,所以使用echo而不是print可以縮短一點。

1

直截了當的方法運作良好。

比較

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

我不能完全確定你的目標是在這裏。

+0

我更新了我的帖子 – Codler 2010-08-12 08:54:24

5

如果你打算消除混淆,你真的不應該寫這樣的代碼,因爲它是一個混淆的步驟。

+0

我更新了我的帖子 – Codler 2010-08-12 08:55:25

0

這是最短的和非混亂的方式:對

echo "0_0";