কোন অ্যারেতে একাধিক উপাদান রয়েছে কিনা তা যাচাই করার আরও ভাল উপায় কী?


177

আমাকে কেবল অ্যারেতে একাধিক উপাদান রয়েছে কিনা তা পরীক্ষা করে দেখতে হবে। আমি এটি এইভাবে করার চেষ্টা করছি:

if (isset($arr['1']))

অন্যান্য traditionalতিহ্যগত উপায় হয়

if (sizeof($arr)>1)

দুজনের মধ্যে কোনটি ভাল? এই জাতীয় পরিস্থিতিতে, দুটি বিকল্প পদ্ধতির মধ্যে আমি কীভাবে বিচার করব? এটি পরিমাপ করার জন্য কি কোনও পারফরম্যান্স চেক মিটার পাওয়া যায় যা আরও ভাল?


অনুমান এখানে $ আরর ইতিমধ্যে একটি অ্যারের জন্য বৈধ! এর অর্থ, শর্তটি যাচাইয়ের আগে এটি আসার আগে এটি ইতিমধ্যে এটির অ্যারে রয়েছে কিনা তা যাচাই করা হয়েছে।
tuxnani

উত্তর:


342

এটা ব্যবহার কর

if (sizeof($arr) > 1) {
     ....
}

অথবা

if (count($arr) > 1) {
     ....
}

sizeof()এটি একটি উপনাম count(), তারা একই কাজ করে।

সম্পাদনা: প্রশ্নের দ্বিতীয় অংশের উত্তর : প্রশ্নের দুটি লাইন প্রশ্নের বিকল্প বিকল্প নয়, তারা বিভিন্ন কার্য সম্পাদন করে। মানটি $arr['1']সেট করা আছে কিনা তা প্রথম পরীক্ষা করে , দ্বিতীয়টি অ্যারেতে উপাদানের সংখ্যা প্রদান করে।


8
@ এনবি: প্রশ্নটি সম্পাদনা করা হয়েছিল if (sizeof($arr)), প্রাথমিক কোডটি ছিল , যা অনুবাদ হয়েছিল if (sizeof($arr) == 1)- স্পষ্টভাবে যা অ্যারেতে একাধিক উপাদান রয়েছে কিনা তা পরীক্ষা করে না । এই উত্তরটি সঠিক, এবং আমি ভোট দেওয়ার কোনও কারণ দেখতে পাচ্ছি না, তাই আমার আপত্তি v
অ্যালিক্স অ্যাক্সেল

2
আমি স্বীকার করব যে আমি প্রশ্নের মূল সংস্করণটি একবার দেখিনি, যা এই উত্তরটির উত্তর। প্রসঙ্গটি ভিন্ন, এবং উত্তরটি ভুল হিসাবে লেবেল করার জন্য আমি ক্ষমা চেয়ে নিচ্ছি। এটি ভুল নয়, আপনি যদি মূল প্রশ্নটি দেখেন। এটি সম্পাদিত প্রশ্নের জন্য খারাপ।
এনবি

প্রশ্নের দ্বিতীয় কোড স্নিপেট চেক করবে যে $ অ্যারে ['1'] এ মান সেট করা আছে কি না, এটি গণনা সম্পর্কে উদ্বিগ্ন নয়। উত্তরে এটি সম্বোধন করা হয়নি, কেবল ভেবেছিলাম আমি এটি উল্লেখ করেছি এবং আশা করি উত্তরের লেখক উত্তরটি আপডেট করবেন :)।
অ্যান্ডার্স এম।

@AndersM। যে ইশারা জন্য ধন্যবাদ. আমি উত্তরে এটি প্রতিবিম্বিত করেছি।
চিবুজো

আমি 0-তে সূচকের জন্য <পছন্দ> <কোড> < / প্রাক> দ্রুত 4
অ্যালেক্স 22

44

if(is_array($arr) && count($arr) > 1)

শুধু নিশ্চিত হওয়া যে $ আরর আসলে একটি অ্যারে।

sizeofএর একটি নাম count, আমি গণনাটি ব্যবহার করতে পছন্দ করি কারণ:

  1. টাইপ করার জন্য 1 টির কম অক্ষর
  2. তাত্ক্ষণিকভাবে এক নজরে আকারের অর্থ মেমরির দিক থেকে একটি অ্যারের আকার হতে পারে, খুব প্রযুক্তিগত :(

@ অ্যালেক্সএক্সেল হুম, তবে $ আরআর যদি একটি স্ট্রিং হয় তবে গণনা ($ আরআর) সেই স্ট্রিংয়ের চরিত্রের গণনাটি ফিরিয়ে আনত তাই
আন্ডিয়াস ওয়াং

না, যদি $arrস্ট্রিং হয় তবে তা ফিরে আসবে 1
অ্যালিক্স অ্যাক্সেল

12
ম্যানুয়াল থেকে: var এর উপাদানের সংখ্যা প্রদান করে। যদি var কোনও অ্যারে বা বাস্তবায়িত গণনাযোগ্য ইন্টারফেস সহ কোনও অবজেক্ট না হয় তবে 1 প্রদান করা হবে। একটি ব্যতিক্রম রয়েছে, যদি ভেরটি নুল হয়, 0 প্রদান করা হবে
অ্যালিক্স অ্যাক্সেল

@ অ্যালেক্সএক্সেল ওহ ঠিক আছে ... বাহ্ ধন্যবাদ, ওটা জানত না: ও ... যে কোনও ক্ষেত্রে ওপি যদি কোনও স্ট্রিং এবং অ্যারের মধ্যে পার্থক্য করতে চায় তবে (আকার নির্বিশেষে) নির্দেশ করার জন্য ধন্যবাদ যে আউট :)
Andreas Wong

6
if (count($arr) >= 2)
{
  // array has at least 2 elements
}

sizeof()জন্য একটি উপনাম count()। উভয়ই অ-অ্যারেতেও কাজ করে তবে যুক্তিটি যদি অ্যারে বা Countableঅবজেক্ট হয় তবে তারা কেবল 1 টিরও বেশি মানগুলি ফিরিয়ে দেবে , সুতরাং আপনি এটির সাথে খুব নিরাপদ।


6

স্পষ্টতই count($arr) > 1( sizeofএটির জন্য কেবলমাত্র একটি উপনাম count) ব্যবহার করা সবচেয়ে ভাল সমাধান। আপনার অ্যারের কাঠামোর উপর নির্ভর করে প্রচুর পরিমাণে উপাদান থাকতে পারে তবে $array['1']উপাদান নেই।



6

আমি পছন্দ count()পরিবর্তে ফাংশন sizeOf()হিসাবে sizeOf()শুধুমাত্র উপনাম হল count()এবং অনেক অন্যান্য ভাষায় একই মানে এই নয়। অনেক প্রোগ্রামার sizeof()বরাদ্দ করা মেমরির পরিমাণ ফেরত প্রত্যাশা করে।


1
এখানেও ব্যাখ্যা করা হয়েছে। stackoverflow.com/questions/3974385/php-array-count-or-sizeof যেহেতু এই প্রশ্ন এখন একটি শীর্ষ Google এর জন্য আঘাত এই মূল্যবান sizeofবনামcount
টিম Ogilvy

4

খালি অ্যারেটি পরীক্ষা করার জন্য মাপের () এর চেয়ে ভাল।

অ্যারেটিতে বিপুল পরিমাণে ডেটা থাকে। অ্যারের আকার গণনা করতে এটি আরও সময় নেয়। তবে খালি চেক করা সর্বদা সহজ।

//for empty
  if(!empty($array))
     echo 'Data exist';
  else 
     echo 'No data';


 //for sizeof
 if(sizeof($array)>1)
      echo 'Data exist';
 else 
    echo 'No data';

3

isset () কেবল কোনও ভেরিয়েবল সেট করা আছে কিনা তা পরীক্ষা করে রাখে .. আকার বা অ্যারেতে যা রয়েছে তার সাথে কিছুই করার নেই


2

আমি ধরে নিলাম r আরআর একটি অ্যারে তখন আপনি এটি যা খুঁজছেন তা

if ( sizeof($arr) > 1) ...

1

প্রথম পদ্ধতিটি if (isset($arr['1'])) কোনও এসোসিয়েটিভ অ্যারেতে কাজ করবে না।

উদাহরণস্বরূপ, নিম্নলিখিত কোডটি "না, একের বেশি নয়" প্রদর্শন করে।

$arr = array(
    'a' => 'apple',
    'b' => 'banana',
);

if (isset($arr['1'])) {
    echo "Yup, more than one.";
} else {
    echo "Nope, not more than one.";
}

0

আমি আমার অ্যারে লুপিং করছি এবং ততক্ষণে সুইফ্ট 4/5 এ পূর্ণ ডিফল্ট পাচ্ছি

   for index in 0..<3
    {
        let isIndexValid = allObjects.indices.contains(index)
        var yourObject:Class = Class()
        if isIndexValid { yourObject = allObjects[index]}
        resultArray.append(yourObject)
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.