অ্যারে_পুষ () এবং $ অ্যারে [] = এর মধ্যে পার্থক্য


117

পিএইচপি ম্যানুয়ালটিতে ( অ্যারে_পশ ) বলেছেন ..

অ্যারেতে একটি উপাদান যুক্ত করতে যদি আপনি অ্যারে_পশ () ব্যবহার করেন তবে $ অ্যারে [] = ব্যবহার করা ভাল কারণ কারণ সেভাবে কোনও ফাংশন কল করার কোনও ওভারহেড নেই।

উদাহরণ স্বরূপ :

$arr = array();
array_push($arr, "stackoverflow");
print_r($arr);

বনাম

$arr[] = "stackoverflow";
print_r($arr);

কেন বড় পার্থক্য আছে তা আমি বুঝতে পারছি না।


8
একটি ফাংশন কল, অন্যটি না। ঠিক বাক্সে যা উল্লেখ করা হয়েছে।
কিংক্রাঞ্চ

1
একটি হ'ল উপরে উল্লিখিত ফাংশন কল যার অর্থ ফাংশন কলটিতে / থেকে নিয়ন্ত্রণ স্যুইচ করার জন্য কিছু সংস্থান ব্যবহার করা (যার ফলে ওভারহেড প্রক্রিয়াজাতকরণের ফলস্বরূপ)। অন্যদিকে, পরে সরাসরি অ্যারেতে সরাসরি নতুন উপাদান বরাদ্দ করা হচ্ছে।
গাজানফার মীর

2
এই প্রশ্নটি আমাকে অ্যারের দিকে
ঠেলা দিয়ে

উত্তর:


151

আপনি যখন পিএইচপি (যেমন array_push()) তে কোনও ফাংশন কল করেন, তখন কলটিতে ওভারহেড থাকে, কারণ পিএইচপিকে ফাংশন রেফারেন্সটি সন্ধান করতে হয়, মেমরিতে তার অবস্থানটি সন্ধান করতে হয় এবং এটি যে কোনও কোড সংজ্ঞায়িত করে তা কার্যকর করে।

ব্যবহারের $arr[] = 'some value';জন্য কোনও ফাংশন কলের প্রয়োজন হয় না এবং সরাসরি ডেটা কাঠামোতে সংযোজনটি প্রয়োগ করে। সুতরাং, প্রচুর ডেটা যুক্ত করার সময় এটি ব্যবহার করা অনেক দ্রুত এবং সংস্থান-দক্ষ $arr[]


3
কী যদি এমন স্বরলিপি "$ আরর [] = 'কিছু মান';" ফাংশন কল থেকে ফোটা?
তেবে

1
@gekannt কীভাবে তা ঘটবে? আপনার মন্তব্যে যদি 'কিছু মান' বন্ধ হয় তবে এর অর্থ কি? এটি অ্যারেতে বন্ধের উল্লেখটি সংরক্ষণ করবে would যদি আপনি বোঝাতে চেয়ে থাকেন যে 'কিছু মান' একটি ক্রিয়া যা আহ্বান জানায় তবে এটি ফাংশনটি যা কিছু দেয় তা যুক্ত করবে।
কির্কল্যান্ড

@ কির্কল্যান্ড অপারেটরগুলি বেশিরভাগ সি-জাতীয় ভাষায় বিকল্প বাক্য গঠন সহ কেবলমাত্র ফাংশন, আমি কোনও পিএইচপি বিশেষজ্ঞ নই, তবে আমি কল্পনা করতে পারি যে তারা অপারেটরদের একই পদ্ধতি প্রয়োগ করেছে কারণ এটি সি ডায়ালেক্ট।
কেভিন

1
@ কেভিন: আপনি আমার সাথে একমত এবং আমি নিশ্চিত যে বিকল্প সিনট্যাক্সের পিছনে কোনও ফাংশন রয়েছে যা উপরের বর্ণিত নয়, আমি পিএইচপি ডকুমেন্টেশনে পড়ে থাকা মন্তব্য দেখেছি: "যদি আপনি একটি উপাদান যুক্ত করতে অ্যারে_পুষ্প () ব্যবহার করেন তবে অ্যারেতে $ অ্যারে ব্যবহার করা আরও ভাল [] = কারণ সেভাবে কোনও ফাংশন কল করার কোনও ওভারহেড নেই "" অনুসন্ধানের শব্দটি অনুসন্ধান ইঞ্জিনগুলির জন্য কিছুটা বিভ্রান্তিকর হওয়ায় এর পিছনে ঠিক কী রয়েছে তা দেখার এখনই সময় নেই :) :)
জেএনঘি - আলেকজান্দ্রু জান্তিয়া

$arr[] = valueদ্রুত কোন বাস্তব প্রমাণ আছে কি ? সংকলক কোডটিকে অন্যরকম আচরণ করবে কেন তা ভেবে দেখার চেষ্টা করা হচ্ছে।
সি ..

44

অ্যারে_পুষ্প ব্যবহার করে অ্যারেতে আপনি একটি শটে 1 টিরও বেশি উপাদান যুক্ত করতে পারেন,

যেমন array_push($array_name, $element1, $element2,...)

যেখানে $ উপাদান 1, $ উপাদান 2, ... হ'ল অ্যারেতে যুক্ত হওয়া উপাদান।

তবে আপনি যদি একবারে কেবল একটি উপাদান যুক্ত করতে চান তবে অন্য পদ্ধতিটি (যেমন $ অ্যারে_নাম [] ব্যবহার করে) পছন্দ করা উচিত।


একটি প্রকল্প জুড়ে প্রয়োজন হিসাবে দুটি একত্রিত করা কি খারাপ অভ্যাস?
পিবিউইউবিডি

1
@ টেস্টিং 123 একেবারে না। হাতের কাছে উপলব্ধ সবচেয়ে কার্যকর সমাধানটি ব্যবহার করা ভাল অনুশীলন, যদি না তা পাঠযোগ্যতা, সামঞ্জস্যতা ইত্যাদিকে মারাত্মকভাবে পঙ্গু করে দেয় (বা যদি আপনার নির্দিষ্ট স্টাইলের গাইড মানতে হয়))
ক্রিস ক্রাসজেউস্কি

15

পার্থক্যটি নীচের লাইনে "এটি কারণ কোনও ফাংশন কল করার কোনও ওভারহেড নেই।"

array_push()প্রথম যুক্তিটি অ্যারে না হলে একটি সতর্কতা উত্থাপন করবে। এটি এমন $var[]আচরণের থেকে পৃথক হয় যেখানে একটি নতুন অ্যারে তৈরি করা হয়।


4
আমি বলিনি যে এটি একটি কারণ ছিল। প্রশ্নে, পার্থক্য জিজ্ঞাসা করা হয়েছিল এবং এটিও পার্থক্য
বৈগ

7

আপনার যদি সর্বদা $array[]সম্ভব হয় তবে ব্যবহার করা উচিত কারণ বাক্সে ফাংশন কলটির জন্য কোনও ওভারহেড নেই। সুতরাং এটি ফাংশন কল চেয়ে কিছুটা দ্রুত।


4

অ্যারে_পুষ - অ্যারের শেষের দিকে এক বা একাধিক উপাদান পুশ করুন

" শেষ পর্যন্ত এক বা একাধিক উপাদান " শব্দটি নোট করুন এটি ব্যবহার করে $arr[]আপনাকে অ্যারের সর্বাধিক আকার পেতে হবে


পুনরায় "এটি করতে $ আরআর [] ব্যবহার করে আপনাকে অ্যারের সর্বাধিক আকার পেতে হবে" । না, আপনি বিভ্রান্ত হচ্ছে $arr[...index...] = $value;এখানে কি আলোচনা হচ্ছে, যা দিয়ে $arr[] = $value;। শেষ বাড়াতে, আকার বা অ্যারে জানতে হবে না। একাধিক উপাদান কেবল একাধিক কল হতে পারে: $arr[] = $value1; $arr[] = $value2; $arr[] = $value3;
টুলমেকারস্টেভ

2

ব্যাখ্যা করুন: 1. প্রথমে অ্যারেতে ভেরিয়েবল ঘোষণা করুন।

2. দ্বিতীয় অ্যারে_পশ পদ্ধতিটি অ্যারে ভেরিয়েবলের স্ট্রিংটি পুশ করতে ব্যবহৃত হয়।

3.ফিনালি এটি ফলাফল মুদ্রণ করবে।

৪. দ্বিতীয় পদ্ধতিটি অ্যারেতে স্ট্রিংটি সরাসরি সঞ্চয় করে।

৫.পথ_আর পদ্ধতি ব্যবহার করে অ্যারে মানগুলিতে ডেটা মুদ্রিত হয়।

এই দুটি একই


1

উভয়ই সমান, তবে অ্যারে_পুষ্প এটির প্যারামিটারে একটি লুপ তৈরি করে যা একটি অ্যারে এবং $ অ্যারে [] = $ উপাদান সম্পাদন করে


0

আমি জানি এটি একটি পুরানো উত্তর তবে এটি অন্যদের পক্ষে জেনে রাখা সহায়ক হতে পারে যে উভয়ের মধ্যে আরেকটি পার্থক্য হ'ল যদি আপনাকে লুপ প্রতি 2/3 এর চেয়ে বেশি মান যুক্ত করতে হয় তবে এটি ব্যবহার করা দ্রুত:

     for($i = 0; $i < 10; $i++){
          array_push($arr, $i, $i*2, $i*3, $i*4, ...)
     }

পরিবর্তে:

     for($i = 0; $i < 10; $i++){
         $arr[] = $i;
         $arr[] = $i*2;
         $arr[] = $i*3;
         $arr[] = $i*4;
         ...
     }

সম্পাদনা করুন - forশর্তাধীন বন্ধনী বন্ধ করতে ভুলে গেছেন


1
আমি কীভাবে এটি অ্যারে_মার্জের সাথে তুলনা করি। যেমন for(...){ $arr = $arr + [$i, $i*2, $i*3, $i*4, ...] }। আমি অনুমান করছি অ্যারে_পুষ্প এর চেয়ে এখনও কিছুটা দ্রুত।
টুলমেকারস্টেভ

0

কেউ বলেনি, তবে অ্যারে_পুষ্প কেবলমাত্র অ্যারের সমাপ্তির দিকে একটি উপাদানকে ধাক্কা দেয় যেখানে $ অ্যারে [সূচী] কোনও প্রদত্ত সূচকে একটি মান সন্নিবেশ করতে পারে। বড় পার্থক্য.


প্রশ্নটি ছিল "অ্যারে_পুষ্প () এবং $ অ্যারের মধ্যে পার্থক্য [] =" আমি যা বলেছি তা একটি পার্থক্য। একটি বড় এক!
মার্কো

1
আমি শ্রদ্ধার সাথে একমত। আপনি বর্ণনা করছেন $array[index] = , যা এর চেয়ে আলাদা অপারেশন$array[] = ... । প্রশ্নটি দুটি টুকরো কোড দেয় এবং কেন তাদের মধ্যে একটি গুরুত্বপূর্ণ [পারফরম্যান্স] পার্থক্য থাকবে তা জিজ্ঞাসা করে। প্রশ্নের আক্ষরিক অর্থ $array[] = ..., যা একটি নির্দিষ্ট পিএইচপি আইডিয়াম, এটি কোনও সূচককে জড়িত করে না। অ্যারে + সূচক একটি পৃথক সমস্যা সমাধান করে, বিভিন্ন কোড দেয় এবং একটি ভিন্ন ট্রেড অফ।
টুলমেকারস্টেভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.