سؤال

أريد إرجاع مجموعة من القيم من الوظيفة حتى النقطة الموجودة .... على سبيل المثال ....

function abc($i="3"){

    for($a=1;$a<=$i;$a++) {
        $name='t'.$i;
        $$name = "ae".$a;
    }
    //now i am returning values 
    return array($t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10);
    //but i only want to return $t1,$t2,$t3 depending on $i
}

شكرا....

therefromhere أنا أيضا إنشاء صفيف في الحلقة، سوف أصبض الكود الأصلي بحيث يمكنك فهمها بطريقة أفضل

function extracting_comments($table, $fields,$condition,$order,$limit){
        $query="SELECT ".$fields."
                FROM ".$table."
                WHERE ".$condition."
                ORDER BY ".$order."
                LIMIT ".$limit." ";
        if($stmt = $this->conn->prepare($query)) {
            $stmt->execute();
            $row = array_pad(array(), $stmt->field_count, '');
            $params = array();
                foreach($row as $k=>$v) {
                  $params[] = &$row[$k];
                  echo $params[0];
                }
            call_user_func_array(array($stmt,'bind_result'),$params);
            $i=0;
            while($stmt->fetch()) {
            $i++;
            $name='t'.$i;
            $$name = array();
            foreach ($row as $b=>$elem) {
            $atul[$b]=$row[$b];
            }
            $$name=$atul;
            }
            return array($t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10);
            $stmt->close();
        }

    }

الآن هم فقط 5 صفوف من البيانات حتى لا تتم إرجاع أي نقطة إرجاع $ T6، $ T7، $ T8، $ T9، $ T10 وأريد إصلاحه، وأنا أدعو الوظيفة باستخدام

$extract=extracting_comments($table, $fields,$condition,$order,$limit);

الرجاء المساعدة ... شكرا

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

المحلول

أعتقد أن هذا سوف يساعدك. لديك رمز معقد للغاية مع الكثير من الآثار الجانبية والعلة، من الأفضل أن تفكر في إعادة تصميمها. أيضا وضع البيانات بعد العودة لن يكون لديك أي تأثير، لأنه لن يتم استدعاء.

function extracting_comments($table, $fields,$condition,$order,$limit){
                $query="SELECT ".$fields."
                                FROM ".$table."
                                WHERE ".$condition."
                                ORDER BY ".$order."
                                LIMIT ".$limit." ";
                if($stmt = $this->conn->prepare($query)) {
                        $stmt->execute();
                        $row = array_pad(array(), $stmt->field_count, '');
                        $params = array();
                                foreach($row as $k=>$v) {
                                  $params[] = &$row[$k];
                                  echo $params[0];
                                }
                        call_user_func_array(array($stmt,'bind_result'),$params);
                        $i=0;
                        $result = array();
                        while($stmt->fetch()) {
                        $i++;
                        foreach ($row as $b=>$elem) {
                        $atul[$b]=$row[$b];
                        }
                        $result[]=$atul;
                        }
                        $stmt->close();
                        return $result;
                }

        }

نصائح أخرى

مجرد بناء الصفيف في الخاص بك for حلقه:

function abc($i=3) {
    $array = array();
    for ($a=1; $a<=$i; $a++) {
        $array[] = "ae".$a;
    }
    return $array;
}

بعد تحرير سؤالك، كشفتنا عن مشكلتك الفعلية، انظر هنا اقتراحي:

function extracting_comments($table, $fields, $condition, $order, $limit) {
    $retVal = array();
    $query = "SELECT ".$fields."
        FROM ".$table."
        WHERE ".$condition."
        ORDER BY ".$order."
        LIMIT ".$limit." ";
    if ($stmt = $this->conn->prepare($query)) {
        $stmt->execute();
        $row = array_pad(array(), $stmt->field_count, '');
        call_user_func_array(array($stmt, 'bind_result'), $row);
        while ($stmt->fetch()) {
            $retVal[] = $row;
        }
        $stmt->close();
        return $retVal;
    }
}

سيكون من النظافة إنشاء مجموعة أثناء تذهب، فلن تحتاج إلى المتغيرات المؤقتة:

function abc($i="3") {
  $myArray = array();
  for($a=1;$a<=$i;$a++) {
    $myArray[] = "ae" . $a;  // add new values to the end of the array
  }

  return $myArray;
}

إذا كنت ترغب في التحقق مما إذا كانت المتغيرات موجودة (ولا تكون فارغة)، فاستخدم isset ().

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