سؤال

لدي مجموعة التي تحتوي على فئات معينة من المادة ($link_cat).أنا ثم استخدام mysql_fetch_array طباعة كل من الفئات المتاحة في قائمة مع مربعات.في حين انها تفعل هذا أريد مقارنة قيمة على قيمة من المصفوفة.إذا كان هناك تطابق ، فإن ذلك يعني أن واحدة من الفئات ينطبق على هذه المادة ، يجب أن تطبع سطر من التعليمات البرمجية لتطبيق فحص السمة.كبيرة!إلا أنه ليس العامل =[

    while ( $row = mysqli_fetch_array($results, MYSQLI_ASSOC) ){
    $cat[$i] = $row['category'];
    $cat_id[$i] = $row['cat_id'];

    echo '<li><input type="checkbox" ';

    $catCount = count($link_cat);
    for ($ct = 0; $ct < $catCount; $ct++){
        if ($cat_id[$i] == $link_cat[$ct]){ 
            echo 'checked="checked" ';
        }
    }

    echo 'name="' . $cat_id[$i] . '" />' . $cat[$i] . '</li>';

    $i++;
}

لم أقم حلقة متداخلة قبل (وأظن هذا المشكلة).

يبدو أن المشكلة أنه عند تشغيل $link_cat[0] والتي سيكون لها الفئة الأولى للتحقق ضد في ذلك - لا تسجيل.أنها تأتي فارغة.طباعة المتغيرات داخل حلقة for أكدت هذا.أي أشخاص آخرين [1] [2] إلخ ، ما يرام.انها مجرد [0].ولكن لماذا ؟ لا يبدو أن له أي معنى.أنا أعرف أن هناك شيئا لأنني طباعة محتويات الصفيف كما ملأت انها فقط للتحقق.إلا أنها لا تظهر فقط خلال الحلقة.أي أفكار ؟

هل كانت مفيدة؟

المحلول

طفيفة علة (و صارخ تغيير نمط):الإصدار الخاص بك يمكن طباعة checked="checked" عدة مرات.هل $cat و $cat_id تحتاج إلى أن تكون المصفوفات?

while ( $row = mysqli_fetch_array($results, MYSQLI_ASSOC) ) {
    $cat = $row['category'];
    $cat_id = $row['cat_id'];

    echo '<li><input type="checkbox" ';
    if ( in_array($cat_id, $link_cat) ) {
        echo 'checked="checked" ';
    }
    echo "name='$cat_id' />$cat</li>";
}

عن الحالة التي يكون فيها المرء عادة رمي المصحح في مشكلة ، أود أن رمي في لطيفة print_r في تعليق كتلة (عرض-المصدر إخراج التصحيح أكثر أمنا على العيش العش المواقع).

echo '<!-- ' . print_r($link_cat, TRUE) . ' -->';

نصائح أخرى

بينما كنت في الأصل خاطئة جدا عن مجموعة حلقات الحاجة إلى إعادة تعيين, لا أستطيع التخلص من الشعور بأن حلقات من خلال ذلك مجموعة ليست أسرع طريقة أن تفعل ما كنت بعد.

ربما array_search لن يفعل ، أو ربما array_key_exists. بالضيف تبدو الفائز ولكن لم أكن أعتقد ذلك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top