অ্যারে থেকে প্রথম এক্স আইটেম ফিরে


139

আমি অ্যারে থেকে প্রথম 5 টি আইটেম ফিরিয়ে দিতে চাই। কিভাবে আমি এটি করতে পারব?


5
এই প্রশ্নে downvotes সঙ্গে wtf?
সাইলেন্টগোস্ট 10

2
প্রত্যেকটি উত্তর ভাল থাকায় আমি সমস্তকে উন্নত করেছিলাম।
ভিলি

উত্তর:


273

array_slice একটি অ্যারের এক স্লাইস প্রদান করে

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

আপনার ক্ষেত্রে যে কোডটি চান তা হ'ল প্রথম পাঁচটি উপাদান ফেরত দেওয়া


1
তবে এটি সহযোগী অ্যারেগুলির সাথে কাজ করবে না। চাবিগুলি হারিয়ে যায়।
এসকোবার

4
@ ইসকোবার: সহযোগী অ্যারেগুলির অগত্যা কোনও আদেশ নেই, তারা কেবল মানগুলির কীগুলি ম্যাপ করে; সুতরাং "3 থেকে 7 এর মানগুলি" যাইহোক সত্যিই
অর্থবোধ করে

ঠিক আছে, তবে এই ক্ষেত্রে এটি অর্ডার সম্পর্কিত নয়। এটি প্রথম প্রথম 5 টি আইটেম সম্পর্কে। এবং আপনি এখানে অ্যারে_স্লাইস ব্যবহার করতে পারবেন না।
ইসকোবার

2
@ ইসকোবার: আপনার কোনও সংজ্ঞায়িত অর্ডার না থাকলে কোনও প্রথম আইটেম নেই । "প্রথম" কেবল তখনই কাজ করে যদি আপনি বলতে পারেন যে কোন আইটেমটি অন্য আইটেমের আগে বা পরে আসে। তবে কেবল এটির মজাদার জন্য, আপনি কীগুলি অ্যারের মানগুলির সাথে পুনরায় একত্রিত করতে পারেন (যদিও এখনও কোনও নির্ধারিত আদেশ নেই):array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
নিটল

1
@darkhorizon: " array_slice আয় একটি অ্যারের একটি ফালি"। তবে আমি আমার উত্তরটি এটিকে আরও পরিষ্কার করার জন্য সম্পাদনা করব।
নিটল

9

অ্যারে_স্প্লাইস - অ্যারের একটি অংশ সরিয়ে অন্য কিছু দিয়ে এটি প্রতিস্থাপন করুন:

$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]])

যদি দৈর্ঘ্য বাদ দেওয়া হয় তবে অ্যাস্টের শেষ থেকে অফসেট থেকে সবকিছু সরিয়ে দেয় । যদি দৈর্ঘ্য নির্দিষ্ট করা হয় এবং ধনাত্মক হয় তবে অনেকগুলি উপাদান সরানো হবে। যদি দৈর্ঘ্য নির্দিষ্ট করা হয় এবং নেতিবাচক হয় তবে সরানো অংশটির সমাপ্তি অ্যারের প্রান্ত থেকে অনেকগুলি উপাদান। পরামর্শ: প্রতিস্থাপনটিও নির্দিষ্ট করা থাকলে অ্যারের শেষ থেকে শেষ অবধি সবকিছু সরিয়ে ফেলতে, দৈর্ঘ্যের জন্য গণনা ($ ইনপুট) ব্যবহার করুন।


প্রথম 5 টি উপাদান ফেরত দেওয়ার বাক্য গঠনটি হচ্ছে অ্যারে_স্প্লাইস ($ ইনপুট, 5)
অ্যাল্যান্ড

@ আন্ড্রেজস কেইনিকোভস পিএইচপি.এন.পি অনুসারে, "যদি দৈর্ঘ্য বাদ দেওয়া হয় তবে ক্রমটিতে অ্যারে শেষ পর্যন্ত অফসেট আপ থেকে শুরু করে সবকিছু থাকবে" " উত্তরের গাed় পাঠ্যটি ঠিক এর বিপরীতে বলে।
কালকো

@ কলকো: আপনি সম্ভবত ভুল পৃষ্ঠাটি দেখছেন। আমার অনুলিপি-আটকানো বিবৃতিটি এখনও বৈধ: php.net/manual/en/function.array-splice.php
আন্দ্রেজ ক্যানিকভস

@ আন্ড্রেজস ক্যানিকভস সত্যিকারের সাথী, আমার কাছে অ্যারে_স্লাইসের জন্য পৃষ্ঠা ছিল এবং আপনার উত্তরটি অ্যারে_স্প্লাইস সম্পর্কে ছিল তা আমি খেয়াল করিনি ... আমার খারাপ: ডি
কালকো

3

আপনি যদি কেবল প্রথম 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;

    }

  }

?>

আপনি যদি এমন কোনও ফাংশন লিখতে চান যা অ্যারের অংশটি দেয়, আপনার অ্যারে_স্লাইস ব্যবহার করা উচিত:

<?php

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

?>

0

আপনি অ্যারে_স্লাইস ফাংশনটি ব্যবহার করতে পারেন তবে আপনি কি অন্য মান ব্যবহার করবেন? না শুধুমাত্র প্রথম 5? কারণ আপনি যদি প্রথম 5 টি ব্যবহার করেন তবে আপনি এসকিউএল-তে লিমিট ব্যবহার করতে পারেন।


-4

আরও অবজেক্ট ওরিয়েন্টেড উপায় হ'ল # [] পদ্ধতিতে একটি সীমা সরবরাহ করা। এই ক্ষেত্রে:

বলুন যে আপনি অ্যারে থেকে প্রথম 3 আইটেম চান।

সংখ্যা = [1,2,3,4,5,6]

সংখ্যা [0..2] # => [1,2,3]

বলুন আপনি অ্যারে থেকে প্রথম এক্স আইটেম চান।

সংখ্যার [0..x -1]

এই পদ্ধতিটি সম্পর্কে দুর্দান্ত জিনিসটি যদি আপনি অ্যারের চেয়ে বেশি আইটেম চেয়ে থাকেন তবে এটি কেবল পুরো অ্যারেটি ফিরিয়ে দেয়।

সংখ্যা [0..100] # => [1,2,3,4,5,6]


3
কিন্তু পিএইচপি রেঞ্জগুলি সমর্থন করে না। আপনি কি রুবি বা এরকম কিছু সম্পর্কে কথা বলছেন না নিশ্চিত?
ভিক্টর মার্চুক

2
"আরও অবজেক্ট ওরিয়েন্টেড উপায়"? এই উত্তরটির সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের কোনও সম্পর্ক নেই।
ডকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.