php数组的一些技巧记录

98次阅读

共计 1773 个字符,预计需要花费 5 分钟才能阅读完成。

日常开发过程中,经常会设计到 数组 的操作,无论是数据库查询还是数据的导入,难免都会使用到,这里将作自己在这过程中的所用所想做一个记录。

去重

比如我们在一组用户数据中,想知道一共有多少 company_id,则如是操作:

1
2
3
4
5
6
7
8
9
foreach ($data as $value) {
            // 查看有没有重复项
            if (isset($res[$value[‘company_id’]])) {
                // 有:销毁
                unset($value[‘company_id’]);
            } else {
                $res[$value[‘company_id’]] = $value[‘company_id’];
            }
        };

进一步处理,要去掉主键的话,则可以这样:

1
$companyId = array_keys($res);

当然,想让他看起来变成 3,4,11,用于其他途径的话,可以这样:

1
implode(‘,’,$companyId)

以逗号为分隔,转为字符串即可。

对象转数组

如果使用静态方法查询,得到的就是对象,如果操作 DB 类进行,则得到的是数组,当然你可以在设置中定义查询到的结果类型。

这里以静态方式查询为例,我们查到一个对象后,怎么才能完美的转换为数组呢,只需如下操作:

1
2
$list[$vauel[‘financial_item_name’]] = appindexmodelFinancialInData::where(‘financial_item’,$vauel[‘financial_item_name’])->where(‘financial_data’,$searchData)->select();
$list[$vauel[‘financial_item_name’]] = (new thinkCollection($list[$vauel[‘financial_item_name’]]))->toArray();

$list[$vauel[‘financial_item_name’]]是任何你查询到的对象,通过 (new thinkCollection($list[$vauel[‘financial_item_name’]]))->toArray() 即可转换为数组。

降维

以上方得到的数组 $list 为例,我们现在要逐一取出或者遍历操作,就需要降维。

1
2
3
4
5
6
foreach($list as $k=>$info){
            if(!empty($info)){
                foreach($info as $i){
                    dump($i);
                }
            }

php 数组的一些技巧记录

未完待续……

正文完
 0