আমি জানি এটি একটি পুরানো বিষয় তবে এখনও। আমি কোডে কাজটি করতে গিয়ে ডিবাগ করছি ঠিক তখনই সমস্যাটি পেয়েছি এবং কারও কারও সাথে একই সমস্যা থাকতে পারে ...
কোডটি এর মতো দেখায় বলে দিন:
$positions = $this->positions() || [];
আপনি প্রত্যাশা করবেন (যেমন আপনি যেমন জাভাস্ক্রিপ্ট থেকে অভ্যস্ত) যে যখন-এই-> অবস্থানগুলি () মিথ্যা বা নাল ফেরায়, $ অবস্থান খালি অ্যারে হয়। তবে তা হয় না। মান সত্য বা মিথ্যা depends এই-> অবস্থানগুলি () কী দেয় তার উপর নির্ভর করে।
আপনার যদি $ এটি-> পজিশনের () বা খালি অ্যারের মান পেতে হয় তবে আপনাকে ব্যবহার করতে হবে:
$positions = $this->positions() or [];
সম্পাদনা করুন:
উপরের উদাহরণটি ইচ্ছাকৃতভাবে কাজ করে না তবে সত্যটি হ'ল ||
এবং or
একই নয় ... এটি চেষ্টা করুন:
<?php
function returnEmpty()
{
//return "string";
//return [1];
return null;
}
$first = returnEmpty() || [];
$second = returnEmpty() or [];
$third = returnEmpty() ?: [];
var_dump($first);
var_dump($second);
var_dump($third);
echo "\n";
এটি ফলাফল:
bool(false)
NULL
array(0) {
}
সুতরাং, আসলে তৃতীয় বিকল্পটি ?:
হ'ল সঠিক সমাধান যখন আপনি ফিরে মান বা খালি অ্যারে সেট করতে চান।
$positions = $this->positions() ?: [];
পিএইচপি 7.2.1 সঙ্গে পরীক্ষিত
$e = true || $x = 'foo'
সংজ্ঞা দেওয়া হবে না$x
, উচ্চতর নজিরের কারণে নয়।