TGViewer
CodeVerse | دنیای برنامه نویسان CodeVerse | دنیای برنامه نویسان @codeverse_dev · 1.06K subscribers
Post #553 352
🐘 وقتی ()isset اون چیزی نیست که فکر می‌کنی!

خیلی‌ها ()isset رو فقط برای این استفاده می‌کنن:

if (isset($user)) {
// ...
}

اما یه رفتار مهم داره که توی پروژه‌های واقعی می‌تونه باعث باگ بشه:
$data = [
'name' => null
];

var_dump(isset($data['name']));
// false

چرا؟

چون ()isset در PHP فقط بررسی نمی‌کنه که کلید وجود داره؛ بررسی می‌کنه که مقدار وجود داشته باشه و null نباشه.

پس این دو حالت از نظر ()isset یکی هستن:

$data = [];

$data = [
'name' => null
];

هر دو:
isset($data['name']); // false

اگر واقعاً می‌خوای بفهمی کلید وجود داره یا نه، از ()array_key_exists استفاده کن:
$data = [
'name' => null
];

var_dump(array_key_exists('name', $data));
// true

چرا این موضوع مهمه؟ 👇

فرض کن API بهت این response رو بده:
{
"name": null
}

اینجا null ممکنه یک مقدار کاملاً معنادار باشه؛ مثلاً یعنی کاربر عمداً نامش رو حذف کرده.

ولی اگر اینطوری بنویسی:

if (!isset($data['name'])) {
// name doesn't exist
}

داری دو مفهوم متفاوت رو یکی در نظر می‌گیری:

❌ کلید وجود ندارد
❌ کلید وجود دارد ولی مقدارش null است

در پروژه‌های جدی، این تفاوت می‌تونه روی Validation، API، PATCH Request و Update Logic تأثیر مستقیم بذاره.

🔑 قاعده حرفه‌ای:

isset() → آیا مقدار وجود دارد و null نیست؟

array_key_exists() → آیا این کلید واقعاً داخل آرایه وجود دارد؟

همین تفاوت‌های کوچک، دقیقاً جایی هستن که کد معمولی رو از کد حرفه‌ای جدا می‌کنن.


@CodeVerse_dev
  • ❤ 10
More from @codeverse_dev
  1. Oct 7, 2026👨‍💻 برنامه‌نویسی با AI راحت‌تر شده؛ پس چرا بعضی Developerها خسته‌تر شده‌اند؟ طبق نظرسنجی…
  2. Oct 7, 2026🚨 وردپرس 7.1.3 منتشر شد؛ این یکی را عقب نینداز وردپرس دیروز نسخه 7.1.3 را منتشر کرد؛ یک آ…
  3. Oct 6, 2026شرکت Google وارد یک درگیری جدی با ناشران شده ⚖️ رگولاتور رقابت لهستان اعلام کرده Google را…
  4. Oct 6, 2026اگر Windows 11 داری، قبل از نصب بعضی آپدیت‌ها حواست باشد ⚠️ مایکروسافت تأیید کرده آپدیت پی…
  5. Oct 6, 2026اگر Chrome استفاده می‌کنی، این آپدیت را جدی بگیر ⚡ نسخه Stable مرورگر Chrome برای دسکتاپ ب…
  6. Oct 6, 2026🖥 سازنده محتوایی؟ ویندوزت بدون این ۵ نرم‌افزار نصفه‌ست! خب راستشو بخوای، من خودم تا چند و…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →