আশ্চর্যরূপে array_keys_exist
কোন অস্তিত্ব নেই ?! অন্তর্বর্তীকালীন যা এই সাধারণ কাজের জন্য একটি একক রেখা প্রকাশ করতে কিছু জায়গা ছেড়ে যায়। আমি শেল স্ক্রিপ্ট বা অন্য কোনও ছোট প্রোগ্রামের কথা ভাবছি।
দ্রষ্টব্য: নীচের প্রতিটি সমাধান […]
পিএইচপি 5.4+ এ উপলব্ধ সংক্ষিপ্ত অ্যারে ডিক্লেয়ারেশন সিনট্যাক্স ব্যবহার করে
if (0 === count(array_diff(['story', 'message', '…'], array_keys($source)))) {
} else {
}
( কিম স্ট্যাক্সের টুপি টিপস )
এই পন্থাটি আমি খুঁজে পেয়েছি সবচেয়ে সংক্ষিপ্ত। array_diff()
আর্গুমেন্ট 2 এ উপস্থিত নয় 1 টি আর্গুমেন্টে উপস্থিত আইটেমির অ্যারে প্রদান করে । সুতরাং একটি খালি অ্যারে নির্দেশ করে যে সমস্ত কীগুলি পাওয়া গেছে। পিএইচপি 5.5 এ আপনি সরল হতে সহজ 0 === count(…)
করতে পারেন empty(…)
।
if (0 === count(array_reduce(array_keys($source),
function($in, $key){ unset($in[array_search($key, $in)]); return $in; },
['story', 'message', '…'])))
{
} else {
}
পড়া সহজ, পরিবর্তন সহজ। array_reduce()
একটি মান পৌঁছানোর জন্য একটি অ্যারের উপরে পুনরাবৃত্তি করতে একটি কলব্যাক ব্যবহার করে। কীগুলি খাওয়ানোর মাধ্যমে আমরা উত্সটিতে থাকা কীগুলি মুছে ফেলার সাথে তার $initial
মানটি আগ্রহী $in
এবং তারপরে আমরা সমস্ত কীগুলি পাওয়া গেলে 0 টি উপাদান দিয়ে শেষের আশা করতে পারি।
আমরা যে চাবিগুলি আগ্রহী তা নীচের লাইনে সুন্দরভাবে ফিট করার কারণে নির্মাণটি পরিবর্তন করা সহজ।
if (2 === count(array_filter(array_keys($source), function($key) {
return in_array($key, ['story', 'message']); }
)))
{
} else {
}
array_reduce
সমাধানের চেয়ে লেখার চেয়ে সহজ তবে সম্পাদনা করা কিছুটা জটিল। array_filter
এটি একটি পুনরাবৃত্তি কলব্যাক যা আপনাকে কলব্যাকের ক্ষেত্রে সত্য (নতুন অ্যারেতে অনুলিপি করুন) বা মিথ্যা (অনুলিপি না করে) একটি ফিল্টার করা অ্যারে তৈরি করতে দেয়। গোটেচ্যা হ'ল 2
আপনার প্রত্যাশা করা আইটেমের সংখ্যায় অবশ্যই পরিবর্তন করতে হবে ।
এটি আরও টেকসই তৈরি করা যেতে পারে তবে শিষ্টাচারের পাঠযোগ্যতার উপর রয়েছে:
$find = ['story', 'message'];
if (count($find) === count(array_filter(array_keys($source), function($key) use ($find) { return in_array($key, $find); })))
{
} else {
}