सरणी


105

से पहले x आइटम लौटाना मैं सरणी से पहले 5 आइटम वापस करना चाहता हूं। मैं यह कैसे कर सकता हूँ?

+4

wtf इस प्रश्न में डाउनवॉट्स के साथ? 15 oct. 092009-10-15 10:14:55

+1

मैंने सभी को ऊपर उठाया, क्योंकि प्रत्येक उत्तर अच्छा है। 15 oct. 092009-10-15 10:16:09

217

array_slice एक सरणी

$sliced_array = array_slice($array, 0, 5) 

का एक टुकड़ा कोड आप चाहते हैं देता है आपके मामले में किया गया है पहले पांच तत्वों

  0

लेकिन यह सहयोगी सरणी के साथ काम नहीं करेगा। चाबियाँ खो जाती हैं। 06 jun. 142014-06-06 14:40:47

+3

@ESCOBAR: सहयोगी सरणी के पास एक आदेश नहीं है, वे केवल मूल्यों के लिए नक्शा कुंजी; तो "मूल्य 3 से 7" वास्तव में वैसे भी समझ में नहीं आता है ... 06 jun. 142014-06-06 15:45:54

  0

सही है, लेकिन इस मामले में यह आदेश से असंबंधित है। यह सिर्फ पहले 5 आइटमों के बारे में है। और आप array_slice का उपयोग यहां नहीं कर सकते हैं। 10 jun. 142014-06-10 16:20:20

+2

@ESCOBAR: यदि आपके पास परिभाषित आदेश नहीं है तो कोई ** पहले ** आइटम नहीं हैं। "पहला" केवल तभी काम करता है जब आप यह बता सकें कि कौन सी वस्तु अन्य वस्तुओं के पहले या बाद में आती है। लेकिन बस इसके मजाक के लिए, आप सरणी के मानों के साथ कुंजी को फिर से जोड़ सकते हैं (हालांकि अभी भी कोई परिभाषित आदेश नहीं है): 'array_combine (array_slice (array_keys ($ array), 0, 5), array_slice ($ सरणी, 0, 5)) ' 10 jun. 142014-06-10 20:07:36

  0

ठीक है आप इसे" पहले 5 आइटम "के साथ बहुत सख्त ले रहे हैं। लेकिन अगर आप सरणी को फिर से चलाते हैं और 5 वें आइटम के बाद इसे रोकते हैं तो आपको क्या मिलता है (या इसे कॉल करें)? आप सभी को वही 5 आइटम मिलेंगे। आप जानते हैं कि मेरा क्या मतलब है? 12 jun. 142014-06-12 11:44:21

  0

@ESCOBAR: मेरी पिछली टिप्पणी देखें। यह आपको पहली 5 कुंजी + मान प्राप्त करेगा। ऐसा लगता है कि php में उस सहयोगी सरणी [सभी के बाद एक परिभाषित आदेश है] (http://stackoverflow.com/q/950975/112968) 12 jun. 142014-06-12 12:02:29

  0

ध्यान दें कि array_slice() संदर्भ द्वारा पारित नहीं किया गया है। तो यदि आप अपने सरणी को कटा हुआ सरणी के साथ ओवरराइट करना चाहते हैं, तो यह होगा: '$ array = array_slice ($ array, 0, 5);' 20 jan. 152015-01-20 00:59:15

+1

@darkhorizon: "' array_slice' ** ** एक सरणी का एक टुकड़ा देता है "। लेकिन मैं इसे थोड़ा स्पष्ट बनाने के लिए अपना जवाब संपादित करूंगा। 20 jan. 152015-01-20 06:19:48

  0

@ESCOBAR अगर preserve_keys को सत्य पर सेट किया गया है, तो कुंजी 12 dec. 162016-12-12 15:06:32


6

array_splice - सरणी के एक हिस्से को हटा दें और कुछ और के साथ बदलने:

$input = array(1, 2, 3, 4, 5, 6); 
array_splice($input, 5); // $input is now array(1, 2, 3, 4, 5) 

पीएचपी मैनुअल से:

array array_splice (array &$input , int $offset [, int $length = 0 [, mixed $replacement]]) 

तो लंबाई छोड़ दिया जाता है, सब कुछ को हटा अंत करने के लिए ऑफसेट से सरणी। यदि लंबाई निर्दिष्ट है और सकारात्मक है, तो कई तत्व हटा दिए जाएंगे। यदि लंबाई निर्दिष्ट है और ऋणात्मक है तो निकाले गए हिस्से का अंत सरणी के अंत से कई तत्व होंगे। युक्ति: जब प्रतिस्थापन भी निर्दिष्ट किया जाता है, ऑफसेट से सरणी के अंत तक सब कुछ हटाने के लिए, लंबाई के लिए गणना ($ इनपुट) का उपयोग करें।

  0

पहले 5 तत्वों को वापस करने के लिए वाक्यविन्यास array_splice ($ इनपुट, 5) 21 may. 132013-05-21 21:20:22

  0

धन्यवाद, अभी तय किया गया है। 22 may. 132013-05-22 12:56:39

  0

@AndrejsCainikovs php.net के अनुसार, "यदि लंबाई छोड़ी जाती है, तो अनुक्रम में सरणी के अंत तक ऑफ़सेट होने से सबकुछ होगा।" उत्तर का बोल्ड टेक्स्ट बिल्कुल विपरीत कहता है। 12 dec. 162016-12-12 15:04:57

  0

@ कालको: आपको शायद गलत पृष्ठ पर देखा गया है। मेरा कॉपी-पेस्ट स्टेटमेंट अभी भी मान्य है: http://php.net/manual/en/function.array-splice.php 12 dec. 162016-12-12 15:24:38

  0

@AndrejsCainikovs सच्चे दोस्त, मेरे पास array_slice के लिए पृष्ठ था और आपने यह नहीं देखा कि आपका उत्तर array_splice के बारे में था। ..मेरा बुरा: डी 13 dec. 162016-12-13 20:20:06


1

वापस जाने के लिए आप सिर्फ उत्पादन करने के लिए पहले 5 तत्वों चाहते हैं, आप लिखना चाहिए कुछ की तरह:

<?php 

    if (!empty ($an_array)) { 

    $min = min (count ($an_array), 5); 

    $i = 0; 

    foreach ($value in $an_array) { 

     echo $value; 
     $i++; 
     if ($i == $min) break; 

    } 

    } 

?> 

आप एक समारोह जो सरणी के भाग के रिटर्न लिखना चाहते हैं, तो आप array_slice उपयोग करना चाहिए:

<?php 

    function GetElements($an_array, $elements) { 
    return array_slice($an_array, 0, $elements); 
    } 

?> 

0

आप array_slice फ़ंक्शन का उपयोग कर सकते हैं, लेकिन क्या आप अन्य मानों का उपयोग करेंगे? या केवल पहले 5? क्योंकि यदि आप केवल पहले 5 का उपयोग करेंगे तो आप SQL पर LIMIT का उपयोग कर सकते हैं।


-3

एक और ऑब्जेक्ट उन्मुख तरीका # [] विधि को एक श्रेणी प्रदान करना होगा। उदाहरण के लिए:

कहें कि आप किसी सरणी से पहले 3 आइटम चाहते हैं।

संख्या = [1,2,3,4,5,6]

संख्या [0..2] # => [1,2,3]

आप पहली बार एक्स चाहते हैं कि एक सरणी से आइटम।

संख्या [0..x-1]

इस विधि के बारे में महान बात से सरणी, यह बस पूरे सरणी देता है यदि आप और अधिक आइटम के लिए पूछना है।

संख्या [0..100] # => [1,2,3,4,5,6]

+3

रहती है लेकिन php श्रेणियों का समर्थन नहीं करता है। क्या आप वाकई रूबी या ऐसा कुछ नहीं बोल रहे हैं? 22 dec. 112011-12-22 22:36:56

+1

"एक और ऑब्जेक्ट उन्मुख तरीके"? इस उत्तर में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के साथ कुछ लेना देना नहीं है। 16 sep. 172017-09-16 15:48:29