[英]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.