လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> is_countable () function မှတဆင့် loop အဆောက်အအုံများကိုကွင်းဆက်ဖွဲ့စည်းမှုများကိုဖြတ်သန်းရန်မရေတွက်နိုင်သည့် variable များကိုဖြတ်သန်းခြင်းကိုမည်သို့ရှောင်ရှားရမည်နည်း။

is_countable () function မှတဆင့် loop အဆောက်အအုံများကိုကွင်းဆက်ဖွဲ့စည်းမှုများကိုဖြတ်သန်းရန်မရေတွက်နိုင်သည့် variable များကိုဖြတ်သန်းခြင်းကိုမည်သို့ရှောင်ရှားရမည်နည်း။

M66 2025-08-04

နေ့စဉ် PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည် arrays သို့မဟုတ်အရာဝတ်ထုများကိုဖြတ်သန်းရန်လိုအပ်လေ့ရှိသည်။ သို့သော် PHP ၏ပြောင်းလဲနေသောအမျိုးအစားသဘောသဘာဝကြောင့် 0 င်ရောက်လာသော variable များကိုရေတွက်နိုင်ရန်ကျွန်ုပ်တို့အမြဲတမ်းသေချာပေါက်မရရှိနိုင်ပါ။ အကယ်. သင်သည် ရေတွက် () ကိုရေတွက်။ မရသော variable တစ်ခုပေါ်တွင်တိုက်ရိုက်အသုံးပြုပါကသို့မဟုတ် fonteach traversal ကိုလုပ်ဆောင်ပါက၎င်းသည်အထူးသဖြင့်မတည်မငြိမ်ပြင်ပဒေတာများကိုကိုင်တွယ်ရာတွင်အမှားအယွင်းများသို့မဟုတ်သတိပေးချက်များကိုဖြစ်စေနိုင်သည်။

ဤပြ problem နာကိုဖြေရှင်းရန် PHP 7.3 သည် အရေအတွက်မ ခေါ်မီ variable ကိုရေတွက်ခြင်းရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသော IS_COUT.COUTCED () function ကိုမိတ်ဆက်ပေးသည်။ ၎င်းသည် code ကိုအားဖြည့်စွက်ခြင်းနှင့်အမှားသည်းခံမှုကိုများစွာတိုးတက်စေသည်။

1 ။ is_countable () function ကိုမိတ်ဆက်

is_countable () သည် PHP 7.3+ မှပေးသော PHP 7.3+ မှပေးသော built-in function တစ်ခုဖြစ်သည် function ရှေ့ပြေးပုံစံသည်အောက်ပါအတိုင်းဖြစ်သည် -

 <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">is_countable</span></span><span>(</span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span>)
</span></span>

ပြန်လာတန်ဖိုးသည် boolean တန်ဖိုးဖြစ်သည်။ အကယ်. variable သည် array တစ်ခုသို့မဟုတ် ရေတွက်နိုင်သော interface ကိုအကောင်အထည်ဖော်လျှင်၎င်းသည် မှန်ကန် သည်။ ဒီလိုမှမဟုတ်ရင် မှားယွင်းတဲ့ ပြန်လာတယ်။

2 ။ မကြာခဏမေးသောမေးခွန်းများ

ကျွန်ုပ်တို့သည်ပြင်ပ API မှအချက်အလက်အစုတခုကိုရ။ ၎င်းကိုဖြတ်သန်းရန်ကြိုးစားပါဆိုပါစို့။

 <span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_data_from_api</span></span><span>();

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$data</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>) {
    </span><span><span class="hljs-comment">// တစ်ခုချင်းစီကို item လုပ်ငန်းစဉ်</span></span><span>
}
</span></span>

အကောင်းဆုံးကတော့ $ ဒေတာဟာ array or array object တစ်ခုပါ။ သို့သော် API သည် Null , string သို့မဟုတ် boolean ပြန်လာလျှင်အထက်ပါကုဒ်သည်သတိပေးချက်တစ်ခုသို့မဟုတ်အမှားတစ်ခုပြုလုပ်လိမ့်မည်။

3 ။ is_countable ၏မှန်ကန်သောကိုယ်ဟန်အနေအထားကိုသုံးပါ။

ဤအရာကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည် traversing မတိုင်မီတရားစီရင်ခြင်းမပြုရန် is_countable () ကို သုံးနိုင်သည်။

 <span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_data_from_api</span></span><span>();

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_countable</span></span><span>(</span><span><span class="hljs-variable">$data</span></span><span>)) {
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$data</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$item</span></span><span>) {
        </span><span><span class="hljs-comment">// 安全地တစ်ခုချင်းစီကို item လုပ်ငန်းစဉ်</span></span><span>
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-comment">// မလုပ်မနေရမဟုတ်သော:ပုံမှန်အပြုအမူကိုမှတ်တမ်းတင်ပါ</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"ရေတွက်။ မရသောဒေတာအမျိုးအစားများကိုလက်ခံရရှိခဲ့သည်。"</span></span><span>);
}
</span></span>

ဤနည်းအားဖြင့်ပြန်လာသော Null , Integer သို့မဟုတ်အခြားမရေမတွက်နိုင်သောအမျိုးအစားများသည်ထိုအစီအစဉ်သည်စနစ်၏ကြံ့ခိုင်မှုကိုမြှင့်တင်ပေးလိမ့်မည်။

4 ။ IS_ARRAY မှခြားနားချက် ()

PHP 7.3 မတိုင်မီ developer များက PHP 7.3 မတိုင်မီက is_array () ကို အသုံးပြုသည်။ ဖြစ်နိုင်ခြေများစွာတွင်၎င်းသည်ဖြစ်နိုင်ချေရှိသော်လည်း မရေတွက်နိုင်သော interface ကိုအကောင်အထည်ဖော်သည့်အရာဝတ်ထုများကိုခွဲခြားသတ်မှတ်ခြင်းမရှိပါ။ ဥပမာအားဖြင့်:

 <span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">MyCollection</span></span><span> </span><span><span class="hljs-keyword">implements</span></span><span> </span><span><span class="hljs-title">Countable</span></span><span> {
    </span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">count</span></span><span>(</span><span><span class="hljs-params"></span></span><span>): </span><span><span class="hljs-title">int</span></span><span> {
        </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-number">0</span></span><span>;
    }
}

</span><span><span class="hljs-variable">$collection</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">MyCollection</span></span><span>();
</span></span>

အခုအချိန်တွင်:

 <span><span><span class="hljs-title function_ invoke__">is_array</span></span><span>(</span><span><span class="hljs-variable">$collection</span></span><span>); </span><span><span class="hljs-comment">// false</span></span><span>
</span><span><span class="hljs-title function_ invoke__">is_countable</span></span><span>(</span><span><span class="hljs-variable">$collection</span></span><span>); </span><span><span class="hljs-comment">// true</span></span><span>
</span></span>

ထို့ကြောင့်ခေတ်သစ် PHP တွင် is_countable () () + count () combinatorial ယုတ္တိဗေဒအစားအသုံးပြုသင့်သည်။

5 ။ လက်တွေ့ကျသောအကြံဥာဏ်

  1. စစ်ဆေးမှုများကိုပြင်ပသွင်းအားစုများပေါ်တွင်ရိုက်ကူးထားသည်

  2. Unified Encapsulation ၏စီရင်ချက်ဆိုင်ရာတရားစီရင်မှုဆိုင်ရာတရားစီရင်ခြင်းဆိုင်ရာယုတ္တိဗေဒ - code သပ်သပ်ရပ်ရပ်ကိုထိန်းသိမ်းရန် completifulatable () checkable () စစ်ဆေးမှုကိုအထွေထွေကိရိယာ function အဖြစ် encapsulated နိုင်ပါတယ်။

  3. အမျိုးအစားအချက်များနှင့် static ခွဲခြမ်းစိတ်ဖြာမှုကိရိယာများကိုပေါင်းစပ်ခြင်း - PHPSTAN သို့မဟုတ်ဆာလံများကဲ့သို့သော PHPSTAN သို့မဟုတ်ဆာလံများကဲ့သို့သောအချက်များသည်မသိသောအမျိုးအစားအန္တရာယ်ကိုထပ်မံလျှော့ချနိုင်သည်။

6 ။ နိဂုံးချုပ်

is_countable () သည်မသေချာမရေရာသောအချက်အလက်တည်ဆောက်ပုံများကိုကိုင်တွယ်ရာတွင်ကျွန်ုပ်တို့အား ပိုမို. အဆင်ပြေစေနိုင်သောအစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်ပြီး၎င်းသည်ကျွန်ုပ်တို့အား ပိုမို. အဆင်ပြေသည်။ ဤလုပ်ဆောင်မှုကိုကောင်းစွာအသုံးပြုခြင်းသည် Runtime အမှားများကိုရှောင်ရှားနိုင်ရုံသာမကခိုင်မာပြတ်သားစွာနေသည့် PHP application များကိုလည်းရေးဆွဲနိုင်သည်။