Php while循环中的最后一次迭代
我试图获取数组中的最后一项,当迭代以输出与字符串不同的内容时Php while循环中的最后一次迭代,php,while-loop,Php,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 =
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'];
}
}
if(计数($this->condition)>1){
$i=0;
而($icondition)){
如果($i==(计数($this->condition)-1)){
foreach($此->条件为$key=>$value){
$query.=$value['columns']。“=”$value['value'];
}
}否则{
foreach($此->条件为$key=>$value){
$query.=$value['columns']。“=”$value['value']”和“;
$i++;
}
}
}
}否则{
foreach($此->条件为$key=>$value){
$query.=$value['columns']。“=”$value['value'];
}
}
但是,它不断添加AND,这意味着$i==(count($this->condition))
永远不会为真
如何解决这个问题?PHP中的数组是基于零的。如果
count()
返回n
,则可以在n-1
第th索引处访问数组中的最后一个元素
因此:
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++;
}
}
while($icondition)){
如果($i==(计数($this->condition)-1)){
foreach($此->条件为$key=>$value){
$query.=$value['columns']。“=”$value['value'];
}
}否则{
foreach($此->条件为$key=>$value){
$query.=$value['columns']。“=”$value['value']”和“;
}
$i++;
}
}
PHP中的数组是基于零的。如果count()
返回n
,则可以在n-1
第th索引处访问数组中的最后一个元素
因此:
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++;
}
}
while($icondition)){
如果($i==(计数($this->condition)-1)){
foreach($此->条件为$key=>$value){
$query.=$value['columns']。“=”$value['value'];
}
}否则{
foreach($此->条件为$key=>$value){
$query.=$value['columns']。“=”$value['value']”和“;
}
$i++;
}
}
简单的方法是:你的if应该是
if ($i == count($this->condition)-1) {
因为数组是0索引的
不过,更简单的方法是,当您的代码在运行时,$i仍然会被设置。为什么不在while完成后阅读它,然后减去一个呢?简单的方法是:你的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'];
}
}
我已经修好了
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'];
}
}
到目前为止,更简单的方法是构建一个条件数组,然后在最后对它们进行内爆
$conditions = array();
foreach($this->condition as $key => $value) {
$conditions[] = $values['columns'] . ' = ' . $value['value'];
}
$query = implode(' and ', $conditions);
到目前为止,更简单的方法是构建一个条件数组,然后在最后对它们进行内爆
$conditions = array();
foreach($this->condition as $key => $value) {
$conditions[] = $values['columns'] . ' = ' . $value['value'];
}
$query = implode(' and ', $conditions);
听起来你最好使用
内爆()!你为什么一直数数?您应该将其放入一个var中,然后使用var来获取值。从它的外观来看,您只需要在返回的每个值之间插入“and”。因此,与其检查它是否是最后一个,不如做一些类似于内爆('AND',$strings)
Hi Mike的事情,小问题是数组看起来像array([0]=>array([0]array(['column']=['value']))
如果有意义的话?听起来你最好使用内爆()
Hi Mike,在这种情况下,我将如何使用内爆-周六在PHP上玩一天可不是我喜欢的事!你为什么一直数数?您应该将其放入一个var中,然后使用var来获取值。从它的外观来看,您只需要在返回的每个值之间插入“and”。因此,与其检查它是否是最后一个,不如做一些类似于内爆('AND',$strings)
嗨,迈克,小问题是数组看起来像数组([0]=>数组([0]数组(['column']=['value']))
如果有意义的话?@Shamil:更新了我的帖子。试试看。如果将它放在if中,会杀死脚本,而将它放在外部,则会产生两个被再次迭代的数组。@Shamil:更新了我的帖子。尝试一下。将它放在if中会杀死脚本,而将它放在外部会生成两个数组,并再次进行迭代。