thinkphp 常用方法
根据id获取上级
示例: return $this->getUpById(8); /** * 递归根据id获取上级 */ public function getUpById($id, &$result = []) { // 根据传入的ID查询当前数据 $currentData = $this->where('id', $id)->find(); if ($currentData) { // 将当前数据加入结果数组 $result[] = $currentData; // 如果当前数据有pid,则递归查询上级数据 if ($currentData['pid'] !== 0) { $this->getUpById($currentData['pid'], $result); } } // 返回结果数组 return array_reverse($result); }将数组中指定键名的值用分隔符连接成字符串
示例: return arrayToString($arr,'name','#'); /** * 将数组中指定键名的值用分隔符连接成字符串 * example: arrayToString($arr,'name','#') */ public function arrayToString($arr, $key, $separator) { $tempArr = []; foreach ($arr as $k=>$v){ if(isset($v[$key])){ $tempArr[] = $v[$key]; } } return implode($separator, $tempArr); }查找数组对象中最小的值 并返回该对象
示例: return $this->findObjectWithExtArr($numberTemplate,'level','min'); /** * 查找数组对象中最小的值 或者最小的值 并返回该对象 * @param string $type max:取最大 min:取最小 */ function findObjectWithExtArr($arr, $field, $type = 'max') { $compareValue = $type != 'max' ? PHP_INT_MAX : PHP_INT_MIN; $resultObject = null;
foreach ($arr as $item) {
if ($type != 'max') {
if ($item[$field] < $compareValue) {
$compareValue = $item[$field];
$resultObject = $item;
}
} else {
if ($item[$field] > $compareValue) {
$compareValue = $item[$field];
$resultObject = $item;
}
}
}
return $resultObject;
}
> 多维对象转一维对象
/**
- 多维对象转一维对象
*/
function flattenArray($array, &$result = []) {
foreach ($array as $item) {
$children = $item['children'] ?? [];
unset($item['children']);
$result[] = $item;
if (!empty($children)) {
flattenArray($children, $result);
}
}
return $result;
}
Db查询去重 goods_id 去重
$db = $this->OrderGoodsModel->where($where) ->field('ANY_VALUE(name) as name, ANY_VALUE(`desc`) as `desc`, ANY_VALUE(id) as id, goods_id') ->group('goods_id') ->select();Db查询字符串数组存在的id 比如 3,5,5,7,8 查询5的列表
$arr = $this->GoodsModel->where(['type'=>2])->whereRaw("FIND_IN_SET(".$goods['id'].", goods_ids) > 0")->select();