php else如果不匹配则回显

时间:2013-02-02 22:39:06

标签: php

我有一个数组,我正在尝试改变输出,如果找到一个特定的字符串。

如下所示,当条件发生时,它成功地将Upper Captiva更改为Captiva但忽略了我的else语句,如果条件没有发生,它应该只显示$ row ['SUBDIVISION']值。

我尝试将$ mycodes和$ row ['SUBDIVISION']添加到else行,没有运气。

<?php
    $mycodes = explode(",", $row['SUBDIVISION']);
    $arr = array(   "Upper Captiva" => "Captiva",);
    $printedsomething=0;
    foreach($mycodes as $code) {
        if ($arr[$code] != '' ) {
            if ($printedsomething==1)  echo ", " . $arr[$code];
            else echo $mycodes;
            $printedsomething=1;
        }
    }  //end for loop
?>

1 个答案:

答案 0 :(得分:1)

这是您在评论中要求的代码示例。如果这不起作用,请告诉我,以便我可以删除此答案。

<?php
  $mycodes = explode(',', $row['SUBDIVISION']);
  $arr = array('Upper Captiva' => 'Captiva');

  $printedsomething = false;

  foreach($mycodes as $code) {
    if ( !empty($arr[$code]) ) {
      /*******************************
      * This would be your original code refactored.
        $mycodes should probably be $arr[$code]     */

      echo $printedsomething ? ', ' . $arr[$code] : $mycodes;

      /*******************************/
      $printedsomething = true;
    }
  }  //end for loop
?>

但我不认为这是你想要的。据我所知,您想查看$arr中是否有任何代码,如果是,请将它们回显,用逗号分隔。

除了你不能回显一个数组($mycodes)(我想你想在那里输出$arr[$code])这个事实,可能有一种更优雅的方式,那就是定义一个循环前的空结果数组

$results = array();

然后你可以把相关的值放在那里,所以星星之间的代码会是这样的:

$results[] = $arr[$code];

所以你可以在循环之后做到这一点:

implode(', ', $results);

所以最终的代码看起来像这样:

<?php
  $mycodes = explode(',', $row['SUBDIVISION']);
  $arr = array('Upper Captiva' => 'Captiva');

  $results = array();    

  foreach($mycodes as $code) {
    if ( !empty($arr[$code]) ) {
       $results[] = $arr[$code];
    }
  }

  echo implode(', ', $results);
?>

另一种更优雅的方法是使用PHP提供的一些无数的数组函数。例如,如果您只想输出仅限您的不同代码并通过其他数组进行过滤,则可以在$mycodes上使用array_flip()以将值转换为键。之后,您可以使用array_intersect_key()仅过滤$arr中也存在的键。这样,您可以将整个循环及其输出表示为一行:

<?php
  $mycodes = explode(',', $row['SUBDIVISION']);
  $arr = array('Upper Captiva' => 'Captiva');

  echo implode(', ', array_intersect_key($arr, array_flip($mycodes)));
?>

我无法判断这是否对您有用,因为我不确切知道您的数组是什么样的。此外,我不确定这是否符合您的要求。