• 0

كيف أخزن بيانات على مصفوفة php باستخدام حلقة التكرار foreach؟

في كود بلغة php أتوفر على حلقة التكرار foreach التالية:

$itemArray = array();
foreach ($a->getDetails() as $b) 
{
    if ($b->getValue1() !== $b->getValue2()) 
    {
        if (!array_key_exists($b->getId(), $itemArray))
        {
            $itemArray[$b->getId()] = array('name' => $b->getName(), 'age' => $b->getAge());
        }

    $personName = $itemArray[$b->getId()]['name'];
    $personAge  = $itemArray[$b->getId()]['age'];

    $content    = ('Name is: ' . $personName . ', age is: ' . $personAge);
    }
}

حيث أود تخزين بيانات على مصفوفة. 

ثم عرض محتواها، لكن لا أدري لما لا يتم التخزين بشكل صحيح، كما يبين كود العرض:

array(1) {
[0]=>
  object(PersonDetail)#322 (41) {
["collItemTemplateFieldPersonValues":protected]=>
NULL
["id":protected]=>
int(2375434)
["person_id":protected]=>
int(2184229)
["person_details_id":protected]=>
int(4563874)
["person_details_type_id":protected]=>
NULL
["name":protected]=>
string(4) "Test"
["person_namecode":protected]=>
string(9) "PERSON_ID"
["person_age":protected]=>
int(30)

ما الحل ؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

لقد قمت بتخزينها فعلاً، كل ما ستحتاجه هو تغيير في طريقة عرض البيانات، حيث أن المصفوفة تحتوي على اسم مفتاح لكل حقل مثل name,age... لذا سيكون الكود كالآتي:

$itemArray = array();
foreach ($a->getDetails() as $b) {
    if ($b->getValue1() !== $b->getValue2()) {
        if (!array_key_exists($b->getId(), $itemArray)) {
            $itemArray[$b->getId()] = array('name' => $b->getName(), 'age' => $b->getAge());
        }
    }
}
if (count($itemArray) > 0) {
    foreach($itemArray as $item) {
        $personName = $item['name'];
        $personAge  = $item['age'] ;
        $content    = ('Name is: ' . $personName . ', age is: ' . $personAge);
    }
}

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن