2014-05-01 6 views
7

मैं पहले से दूसरे के सरणी तत्व श्रेणी को कैसे प्राप्त कर सकता हूं? उदा।पावरहेल सरणी इंडेक्स पहले से दूसरे अंतिम

$array = 1,2,3,4,5 
$array[0] - will give me the first (1) 
$array[-2] - will give me the second last (4) 
$array[0..2] - will give me first to third (1,2,3) 
$array[0..-2] - I'm expecting to get first to second last (1,2,3,4) but I get 1,5,4 ??? 

मैं जानता हूँ कि मैं लंबे समय से हाथ करते हैं और for($x=0;$x -lt $array.count;$x++) जा सकते हैं, लेकिन मैं वर्ग कोष्ठक शॉर्टकट के लिए देख रहा था।

+5

तुम बस 'कर सकता है $ सरणी [0 देता है .. ($ array.length -2)] '। –

+0

रॉबर्ट का सुझाव दुर्भाग्यवश मुझे सबसे अच्छा तरीका पता है। मैं भी $ सरणी चाहता था [0 ..- 2] व्यवहार करने के लिए जैसा कि आप उम्मीद करते थे। लेकिन नहीं, यह पीछे की ओर 0 -> [लेन -1] -> [लेन - 2] अनुक्रमित करता है। मैं वास्तव में नहीं देखता कि यह कैसे उपयोगी है। –

+0

@ robert.westerlund आपको अपनी टिप्पणी को एक उत्तर के रूप में जोड़ना चाहिए ताकि हम इस प्रश्न को बंद कर सकें :) –

उत्तर

5

तुम बस इतना की तरह अंत सूचकांक की गणना करने की जरूरत है:

$array[0..($array.length - 2)] 

जाँच करने के लिए कि आप वास्तव में पहली बार अपने सरणी में दो से अधिक प्रविष्टियां हैं याद है, नहीं तो आप अपने आप में डुप्लिकेट हो रही मिल जाएगा परिणाम।

इस तरह के एक डुप्लीकेट का एक उदाहरण होगा:

@(1)[0..-1] 

कौन सा, एक भी 1 की एक सरणी से निम्नलिखित उत्पादन

1 
1 
+0

इसके लिए धन्यवाद! यह एक शर्म की बात है कि आप नकारात्मक अनुक्रमण का उपयोग कर सकते हैं लेकिन यह श्रेणियों में लागू नहीं किया गया है; यह अप्राकृतिक और निराशाजनक है। – AER

संबंधित मुद्दे