更改数组中的值

时间:2013-11-08 10:52:03

标签: php mysql

我有一个数组

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)')

好像它会将第一个值更改为'',不幸的是最后仍有'(blank)'

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

2 个答案:

答案 0 :(得分:1)

你需要检查$ value是否为'(空白)'而不是键,所以:

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

对于像$x = array('First','Second');之类的简单数组当你在foreach中查看数组时,$key将是索引,因此$ x [0]将是值'First'。

答案 1 :(得分: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 ='')