0

当被迭代以输出与字符串不同的内容时,我试图获取数组中的最后一项。

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))永远不会正确。

我该如何解决这个问题?

4

4 回答 4

4

到目前为止,更简单的方法是构建一个条件数组,然后将implode它们放在最后。

$conditions = array();
foreach($this->condition as $key => $value) {
   $conditions[] = $values['columns'] . ' = ' . $value['value'];
}
$query = implode(' and ', $conditions);
于 2012-11-18T03:42:29.200 回答
1

PHP 中的数组是从零开始的。如果count()返回n,则可以在第n-1th 索引处访问数组中的最后一个元素。

因此:

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++;
    }
}
于 2012-11-18T00:54:30.647 回答
0

简单的方法:你的 if 应该是

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

因为数组是 0 索引的。

不过,更简单的方法 - 当您的代码用完时,仍然会设置 $i 。你为什么不在一段时间后阅读它,然后减去一个?

于 2012-11-18T00:55:30.533 回答
0

我已经修好了。

 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'];

        }
    }
于 2012-11-18T01:49:56.277 回答