我有一个数组
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)'
。
我的问题是如何以正确的方式更改数组中的值?
答案 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 ='')