2014-03-06 99 views
-1

试图显示图像取决于在foreach循环中的值是什么,它的第二次正确的回声,但不是第一次..奇怪的是,如果我回显它的值显示它但不是在一个开关图像多数民众赞成statement..here的代码:PHP的foreach只回声第二个值

foreach ($myarray as $value){ 
    echo $value; 
    switch($value){ 
     case 'value1': 
      echo '<img src="something.jpg" />'; 
      break; 
     case 'value2': 
      echo '<img src="something-2.jpg" />'; 
      break; 
    } 
} 

所以如果一个既“值1”和“值2”则呼应这两个值,而只是呼应了值2 image..help?

+2

你需要发布更多的代码 - 你给我们的工作正常:https://eval.in/113932 –

+0

谢谢,发现错误是数组里面的“value1”之后有一个空间。通过做一个var_dump来发现它。值来自wordpress。不管怎么说,也不知道它是不是你,但是当它是一个有效的问题时,请求这个问题被“关闭”的时候有点儿快。我总是发布尽可能多的代码,我认为有必要 – Andres

+0

对于未来,正确的调试技术将“在你到达StackOverflow之前,你已经解决了这个问题。 –

回答

1

我想你只看到第二个值,因为它覆盖了第一个值。 理论上,你应该只有1:1匹配你的情况。

确保您的值类型正确。含义“1”(字符串)和1(数字)可能以不同方式中断。另外,如果你有时间可以得到两个结果,你总是可以将案例加倍。

switch ($value) { 
    case 'FOO': 
     case 'FOOBAR': 
     echo '<img >'; 
    break; 
    case 'BAR': 
     echo '<img>'; 
    break; 
    default: 
     // No match found. 
    break; 
} 

但是,让1和2在相同的情况下没有什么意义。否则,开关的重点是什么 - 所有的值都会得到相同的结果。

希望这会有所帮助!

+0

谢谢,问题是我的'FOO'有一个额外的空间,所以它没有被捕获。 – Andres

+0

给你一个冷静的信贷..再次感谢 – Andres