簡體   English   中英

while循環中的最后一次迭代

[英]the last iteration in a while loop

我正在嘗試獲取數組中的最后一項,以進行迭代以輸出與字符串不同的內容。

if (count($this->condition) > 1) {
        $i=0;
        while ($i < count($this->condition)){
            if ($i == (count($this->condition) -1)) {

                foreach ($this->condition as $key => $value){

                    $query .= $value['columns']." = ".$value['value'];
                }
            } else {
                foreach ($this->condition as $key => $value){

                    $query .= $value['columns']." = ".$value['value']." AND ";
                    $i++;

                }
            }
        }
    } else {
        foreach ($this->condition as $key => $value){
            $query .= $value['columns']." = ".$value['value'];

        }
    }

但是,它一直在添加AND,這意味着$i == (count($this->condition))永遠不會為真。

我該如何解決?

到目前為止,更簡單的方法是構建條件數組,然后在最后將其內implode

$conditions = array();
foreach($this->condition as $key => $value) {
   $conditions[] = $values['columns'] . ' = ' . $value['value'];
}
$query = implode(' and ', $conditions);

PHP中的數組從零開始。 如果count()返回n ,則可以在第n-1個索引處訪問數組中的最后一個元素。

因此:

if ($i == (count($this->condition)))

應該

if ($i == (count($this->condition) - 1))

同樣,您也經常增加$i $i++應該移到foreach循環之外。 應該是這樣的:

while ($i < count($this->condition)) {
    if ($i == (count($this->condition) -1)) {
        foreach ($this->condition as $key => $value){
            $query .= $value['columns']." = ".$value['value'];
        }
    } else {
        foreach ($this->condition as $key => $value){
            $query .= $value['columns']." = ".$value['value']." AND ";
        }

        $i++;
    }
}

簡單方法:您的if應該是

 if ($i == count($this->condition)-1) {

因為數組是0索引的。

但是,更簡單的方法是-由於您的代碼用完了,$ i仍然會被設置。 一會兒用完后為什么不閱讀呢?

我已經解決了。

 if (count($this->condition) > 1) {
            $i=0;
            foreach ($this->condition as $key => $value){

                if ($i == ($conditionCount -1)) {
                    $query .= $value['columns']." = ".$value['value'];
                } else {
                    $query .= $value['columns']." = ".$value['value']." AND ";
                }
            $i++;
            }
    } else {
        foreach ($this->condition as $key => $value){
            $query .= $value['columns']." = ".$value['value'];

        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM