0

我有一个数组

N America | S America | Europe | Asia | (blank)

我正在尝试对其进行查询。但我想改变一些价值观。我有这样的代码:

if (!empty($md)) {
    $mds = '';
    if(count($md) > 0 ){
       $mds .= 'AND ( FALSE';

       foreach($md as $key => $value){
         if ($key == '(blank)') {
            $value ='';
            $mds .= " OR data.m = '$value'";
         } else {

          $mds .= " OR data.m = '$value'";
         }
       }
       $mds .= ') ';
    }
}

实际上它找到了'(blank)'值并将其更改为''. 但最后我得到的是:

AND (FALSE
        OR data.m = ''
        OR data.m = 'S America'
        OR data.m = 'Europe'
        OR data.m = 'Asia'
        OR data.m = '(blank)')

似乎它将第一个值更改为 my '',不幸的是最后仍然存在'(blank)'

我的问题是如何以正确的方式更改数组中的值?

4

2 回答 2

1

您需要检查 $value 是否为 '(blank)' 而不是键,因此:

if ($value == '(blank)') { ... }

对于一个简单的数组,例如$x = array('First','Second');当您在 foreach 中查看数组时,$key将是索引,因此 $x[0] 将是值“First”。

于 2013-11-08T10:57:28.690 回答
0

将第 7 行更改为:

if ($value == '(blank)') {

我的脚本适用于第一个值:

$md = Array('N America','S America','Europe','Asia','(blank)');

if (!empty($md)) {

    $mds = '';
    if(count($md) > 0 ){
       $mds .= 'AND ( FALSE';

       foreach($md as $key => $value){
         if ($value == '(blank)') {
            $value ='';
            $mds .= " OR data.m = '$value'";
         } else {

          $mds .= " OR data.m = '$value'";
         }
       }
       $mds .= ') ';
    }
}

AND ( FALSE OR data.m = 'N America' OR data.m = 'S America' OR data.m = 'Europe' OR data.m = 'Asia' OR data.m = '')

于 2013-11-08T11:00:44.597 回答