လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> array_column ကို သုံး. အရာဝတ်ထု attribute များမအောင်မြင်ရသည့်အကြောင်းရင်းကိုသုံးသပ်ခြင်း

array_column ကို သုံး. အရာဝတ်ထု attribute များမအောင်မြင်ရသည့်အကြောင်းရင်းကိုသုံးသပ်ခြင်း

M66 2025-04-28

PHP တွင် ARRAY_CONOUND function ကို MultidimenSAlal Array မှအချက်အလက်များကိုထုတ်ယူရန်အသုံးပြုသည်။ ပုံမှန်အားဖြင့်၎င်းသည်အချို့သောအကာအကွယ်တစ်ခုသို့မဟုတ်တန်ဖိုးတစ်ခုစီ၏တန်ဖိုးကိုခင်းကျင်းစွာထုတ်ယူရန်အသုံးပြုသည်။ ရိုးရှင်းသောတပ်ဆင်မှုများနှင့်ဆက်ဆံရာတွင်ဤလုပ်ဆောင်ချက်သည်ကောင်းမွန်စွာအလုပ်လုပ်သော်လည်းအရာဝတ်ထုဂုဏ်သတ္တိများကိုဖြည်ရန်ကြိုးစားသောအခါပြ problems နာအချို့ကိုကြုံတွေ့ရနိုင်သည်။ ဤဆောင်းပါးသည်ဤပြ problems နာများကိုအသေးစိတ်ဖော်ပြရန်နှင့်သူတို့၏ဖြေရှင်းချက်များကိုဆန်းစစ်ပါလိမ့်မည်။

1 ။ array_column နှင့်အရာဝတ်ထုအကြားလိုက်ဖက်တဲ့ပြ issues နာများ

array_column function ကိုအရာဝတ်ထုမဟုတ်ဘဲ Arrays အပေါ်အခြေခံပြီးဒီဇိုင်းရေးဆွဲထားသည်။ ရိုးရှင်းသော associative arrays များအတွက် Array_colum သည် ကောင်းမွန်စွာအလုပ်လုပ်သည်, ဘာကြောင့်လဲဆိုတော့ array_column က Extract လုပ်ဖို့ Array ရဲ့သော့ချက်ဒါမှမဟုတ်ကွက်လပ်တစ်ခုလိုအပ်ပေမယ့်အရာဝတ်ထုမှာ array တစ်ခုလိုအဓိကတန်ဖိုးထားတဲ့ဖွဲ့စည်းပုံမရှိဘူး။

ဥပမာ - ပျက်ကွက်အခြေအနေ

ကျွန်ုပ်တို့တွင်အရာဝတ်ထုတစ်ခုစီရှိပြီးအရာဝတ်ထုတစ်ခုစီ၏အ မည် attribute ကိုထုတ်ယူလိုသည်ဆိုပါစို့။

 <?php
class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$people = [
    new Person('Alice', 30),
    new Person('Bob', 25),
    new Person('Charlie', 35)
];

$names = array_column($people, 'name');  // ဒီမှာကျရှုံးလိမ့်မယ်
print_r($names);
?>

ထုတ်လုပ်မှု -

 Warning: array_column() expects parameter 1 to be array, object given in ...

အပေါ်ကပြထားတဲ့အတိုင်း array_colum ဟာ အမှား တစ်ခုကြုံတွေ့ရပြီး array တစ်ခုမျှော်လင့်ထားတာကိုသတိပေးခံရတာပါပဲ,

2 ။ ဒီပြ problem နာကိုဘယ်လိုဖြေရှင်းရမလဲ။

ဤပြ problem နာကိုဖြေရှင်းရန်နည်းလမ်းများစွာရှိသည်။ ဒီမှာဘုံနည်းလမ်းနှစ်ခုရှိပါတယ်:

အစီအစဉ် 1: အရာဝတ်ထုများကို array သို့ပြောင်းပါ

ပထမ ဦး စွာကျွန်ုပ်တို့သည်အရာဝတ်ထုများကိုအပေါင်းအသင်းတစ်ခုသို့ပြောင်းလဲနိုင်သည်။ JSON_DECode နှင့် JSONS_COCTODEDED ကို လျင်မြန်စွာ ပြောင်းလဲနိုင်သည်။

 $peopleArray = array_map(function($person) {
    return get_object_vars($person);  // အရာဝတ်ထုများကို arrays သို့ပြောင်းပါ
}, $people);

$names = array_column($peopleArray, 'name');
print_r($names);

ထုတ်လုပ်မှု -

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

ဤနည်းလမ်းသည်အရာဝတ်ထုတစ်ခုစီကို array တစ်ခုထဲသို့ပြောင်းလဲပြီးပုံမှန်အားဖြင့် Properties ကို extract လုပ်ရန် array_column ကို သုံးနိုင်သည်။

ဖြေရှင်းချက် 2 - array_map နှင့်အမည်မသိလုပ်ဆောင်ချက်များကိုသုံးပါ

အရာဝတ်ထုတစ်ခုလုံးကိုအပေါင်းအသင်းတစ်ခုအဖြစ်ပြောင်းလဲလိုပါကအရာဝတ်ထုတစ်ခုစီ၏ဂုဏ်သတ္တိများကိုကိုယ်တိုင်ထုတ်ယူရန် array_map ကို သုံးနိုင်သည်။

 $names = array_map(function($person) {
    return $person->name;  // အရာဝတ်ထုရဲ့ဂုဏ်သတ္တိများမှတိုက်ရိုက်ဝင်ရောက်ခွင့်
}, $people);

print_r($names);

ထုတ်လုပ်မှု -

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

ဤနည်းလမ်းသည်အရာဝတ်ထုများကိုတိုက်ရိုက်သုတ်သင်ပယ်ရှင်းခြင်းနှင့်ဂုဏ်သတ္တိများကိုထုတ်ယူသည်။

3 ။ အကျဉ်းချုပ်

PHP တွင် array_column သည် Multidimensional Array များမှသတ်မှတ်ထားသောကော်လံများကိုထုတ်ယူရန်အတွက်အလွန်အဆင်ပြေသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော်ကျွန်ုပ်တို့သည်အရာဝတ်ထုတစ်ခု၏ခင်းကျင်းမှုတစ်ခုမှဂုဏ်သတ္တိများကိုထုတ်ယူရန်ကြိုးစားသည့်အခါ array_colum သည် array-based စစ်ဆင်ရေးများကိုသာထောက်ပံ့ပေးသောကြောင့်တိုက်ရိုက်အလုပ်မလုပ်ပါ။ အရာဝတ်ထုများကို array များထဲသို့ပြောင်းလဲခြင်းသို့မဟုတ်အမည်မသိလုပ်ဆောင်ချက်များဖြင့် array_map ကို အသုံးပြု. ဤပြ problem နာကိုဖြေရှင်းနိုင်သည်။

အရာဝတ်ထုများကိုပြုပြင်ပြောင်းလဲရန်အတွက်အမှားအယွင်းများကိုရှောင်ရှားနေစဉ်ဤဆောင်းပါးသည် array_column ကို အသုံးပြု. array_column ကို အသုံးပြု. array_colnum ကိုအသုံးပြုရန်ကူညီနိုင်သည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။