php - একটি অ্যারে কী পিএইচপি বিদ্যমান কিনা তা নির্ধারণ করার জন্য দ্রুত এবং ভাল কি?



performance (6)

এই 2 উদাহরণ বিবেচনা করুন ...

$key = 'jim';

// example 1
if (isset($array[$key])) {
    // ...
}

// example 2    
if (array_key_exists($key, $array)) {
    // ...
}

আমি এই ভাল হয় কিনা তা জানতে আগ্রহী। আমি সর্বদা প্রথম ব্যবহার করেছি, কিন্তু অনেক লোক এই সাইটে দ্বিতীয় উদাহরণটি ব্যবহার করে দেখেছি।

সুতরাং, যা ভাল? দ্রুত? পরিষ্কার অভিপ্রায়?

https://src-bin.com


Answer #1

"দ্রুত" হিসাবে: এটি চেষ্টা করুন (আমার অর্থ array_key_exists() তবে আমি এখন এটি ব্যবহার করতে পারছি না)।

"অভিপ্রায়ের মধ্যে পরিষ্কার" হিসাবে: array_key_exists()


Answer #2

আচ্ছা, প্রধান পার্থক্য হল যে isset() অ্যারে কীগুলির জন্য একটি true প্রত্যাবর্তন করবে না যা array_key_exists() মানের সাথে সামঞ্জস্যপূর্ণ, যখন array_key_exists() করে।

একটি ছোট বেঞ্চমার্ক চালানো দেখায় যে isset() এটি দ্রুততর তবে এটি সম্পূর্ণরূপে সঠিক নাও হতে পারে।


Answer #3

আপনি পড়তে php.net থেকে একটি পার্থক্য আছে:

isset () অ্যারে কীগুলির জন্য সত্যকে ফেরত দেয় না যা একটি NULL মানের সাথে সম্পর্কিত, যখন array_key_exists () করে।

একটি অত্যন্ত অননুমোদিত পরীক্ষা array_key_exists() করার চেয়ে 2.5 গুণ বেশি ধীর দেখায় isset()


Answer #4

আপনি সম্প্রতি করেছি কিছু পরীক্ষা আগ্রহী হলে:

https://.com/a/21759158/520857

সারাংশ:

| Method Name                              | Run time             | Difference
=========================================================================================
| NonExistant::noCheckingTest()            | 0.86004090309143     | +18491.315775911%
| NonExistant::emptyTest()                 | 0.0046701431274414   | +0.95346080503016%
| NonExistant::isnullTest()                | 0.88424181938171     | +19014.461681183%
| NonExistant::issetTest()                 | 0.0046260356903076   | Fastest
| NonExistant::arrayKeyExistsTest()        | 1.9001779556274      | +209.73055713%

Answer #5

স্পষ্টতই দ্বিতীয় উদাহরণটি ইচ্ছাকৃতভাবে স্পষ্ট, এটি সম্পর্কে কোন প্রশ্ন নেই। # 1 উদাহরণ কি তা নির্ধারণ করতে, আপনাকে পিএইচপি এর ভেরিয়েবল ইনিশিয়াইজেশন অডিওসাইন্রেসিজির সাথে পরিচিত হতে হবে - এবং তারপরে আপনি এটি খুঁজে পাবেন যে এটি নিল মানগুলির জন্য ভিন্নভাবে কাজ করে এবং তাই।

যা দ্রুততর - আমি ধারনা করতে চাই না - আপনার পিএইচপি সংস্করণে কয়েকশত হাজার বার টাইট লুপে চালান এবং আপনি এটি খুঁজে পাবেন :)


Answer #6

is_null() isset() এবং is_null() অন্যান্য ক্রিয়াকলাপের মতো সেরা কর্মক্ষমতা প্রদান করে: array_key_exists() , isset() , isset() + array_key_exists() , is_null() , isset() + is_null() , এখানে একমাত্র সমস্যা যদি ফাংশনটি বিদ্যমান না থাকে তবে ফাংশনটি শুধুমাত্র মিথ্যা ফেরত দেবে না, এমনকি কীটি বিদ্যমান এবং এটি একটি নিল মান রয়েছে।

বেঞ্চমার্ক স্ক্রিপ্ট:

<?php
  $a = array('a' => 4, 'e' => null)

  $s = microtime(true); 
  for($i=0; $i<=100000; $i++) { 
    $t = (isset($a['a'])) && (is_null($a['a'])); //true 
    $t = (isset($a['f'])) && (is_null($a['f'])); //false
    $t = (isset($a['e'])) && (is_null($a['e']));; //false 
  } 

  $e = microtime(true); 
  echo 'isset() + is_null() : ' , ($e-$s)."<br><br>";
?>

ক্রেডিট : http://www.zomeoff.com/php-fast-way-to-determine-a-key-elements-existance-in-an-array/





performance