记录下map的常用写法

 List<String> testString = new ArrayList<>();
        testString.add("x1");
        testString.add("x2");
        testString.add("x3");

        Map<String,List<String>>  mapList = new HashMap<>(16);

        //循环写法
        mapList.forEach( (k,v) ->{
            System.out.println("键- "+k+"=====值-"+v);
                }
        );

        //添值写法1
        List<String> aList ;
        for(String a:testString){
            aList = mapList.getOrDefault(a,new ArrayList<>());
            aList.add("111111");
            mapList.put(a,aList);
        }

        //添值写法2
        for(String a:testString){
           mapList.compute(a,(k,v)->{
               if(v==null){
                   v = new ArrayList<>();
               }
               v.add("111111");
               return v;
           });
        }

<think>好的,我需要帮助用户解决在ThinkPHP 3.2中使用where条件查询大于等于1且小于等于3的正确写法。首先,我得回忆一下ThinkPHP 3.2的表达式查询语法。根据用户提供的引用资料,特别是引用[2]提到的,查询表达式包括eq、neq、gt、egt、lt、elt、in、between等。 用户的需求是同时满足大于等于1和小于等于3,也就是范围查询。通常这种情况下,可以使用BETWEEN操作符,但根据引用[1],BETWEEN的写法是array('between', '1,8'),参数是字符串形式的区间。不过用户的需求是1到3,所以应该用'1,3'。但用户的问题可能更倾向于使用gt和lt的组合,或者直接使用egt和elt的组合。 另外,引用[3]中有一个例子,使用了多个条件组合,并且用or连接。但用户这里需要的是and关系。因此,正确的做法应该是将两个条件合并到同一个字段的数组中,使用多个表达式。 例如,正确的写法应该是: $map['字段名'] = array(array('egt', 1), array('elt', 3), 'and'); 这里,'egt'表示大于等于,'elt'表示小于等于,然后用'and'连接这两个条件。这样生成的SQL就是字段名 >=1 AND 字段名 <=3。 另外,也可以使用BETWEEN表达式,但需要注意BETWEEN在ThinkPHP中的正确用法。根据引用[1],正确的格式是array('between', '1,8'),但这里的参数是字符串,如果使用数字参数可能需要调整。不过更准确的方式可能是传递数组参数,例如array('between', array(1,3)),但根据ThinkPHP 3.2的文档,可能需要使用字符串形式。需要确认这一点。 不过根据用户提供的引用,引用[1]中的例子是$map['id']=array('between','1,8'); 所以正确的BETWEEN写法应该是这样的。所以对于用户的需求,也可以写成: $map['字段名'] = array('between', '1,3'); 这会生成字段名 BETWEEN 1 AND 3,等同于>=1且<=3。这可能更简洁。 因此,用户有两种方法可以实现:一种是使用BETWEEN表达式,另一种是组合egt和elt条件。两种方法都是可行的,但需要注意参数的正确格式。 需要确认的是,当使用BETWEEN时,参数是否可以是数组,比如array(1,3)还是必须是字符串'1,3'。根据引用[1],示例中使用的是字符串,所以用户可能需要使用字符串形式。但有时使用数组可能更可靠,尤其是当数值是变量时,可以避免字符串拼接的问题。 不过为了确保正确性,建议用户使用BETWEEN的字符串形式,或者组合egt和elt条件。如果用户需要更灵活的多个条件组合,组合表达式可能更合适,尤其是在需要and或者or逻辑时。 总结一下,用户的问题的解决方案有两种: 1. 使用BETWEEN表达式: $map['字段名'] = array('between', '1,3'); 2. 使用egt和elt组合: $map['字段名'] = array(array('egt', 1), array('elt', 3), 'and'); 需要根据具体情况选择合适的方法,并确保字段名正确替换为实际的数据库字段。</think>在ThinkPHP 3.2中,实现字段值**大于等于1且小于等于3**的查询条件写法有两种常用方式: --- ### 方法1:使用`BETWEEN`表达式 直接通过`between`表达式指定范围: ```php $map['字段名'] = array('between', '1,3'); ``` 生成的SQL为:`字段名 BETWEEN 1 AND 3` **注意**:参数需用字符串格式`'1,3'`,且数值顺序为`最小值,最大值`[^1]。 --- ### 方法2:组合`egt`和`elt`表达式 通过`egt`(大于等于)和`elt`(小于等于)组合条件,并显式指定逻辑关系为`and`: ```php $map['字段名'] = array( array('egt', 1), array('elt', 3), 'and' // 表示同时满足两个条件 ); ``` 生成的SQL为:`字段名 >= 1 AND 字段名 <= 3`[^2]。 --- ### 完整示例 假设查询`id`字段在1到3之间的记录: ```php $map['id'] = array('between', '1,3'); // 或 $map['id'] = array( array('egt', 1), array('elt', 3), 'and' ); $data = M('表名')->where($map)->select(); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值