Пример #1
0
 /**
  * 获取一条记录的某个字段值
  * @access public
  * @param string $field  字段名
  * @param string $spea  字段数据间隔符号 NULL返回数组
  * @return mixed
  */
 public function getField($field, $sepa = null)
 {
     $options['field'] = $field;
     $options = $this->_parseOptions($options);
     // 判断查询缓存
     if (isset($options['cache'])) {
         $cache = $options['cache'];
         $key = is_string($cache['key']) ? $cache['key'] : md5($sepa . serialize($options));
         $data = S($key, '', $cache);
         if (false !== $data) {
             return $data;
         }
     }
     $field = trim($field);
     if (strpos($field, ',') && false !== $sepa) {
         // 多字段
         if (!isset($options['limit'])) {
             $options['limit'] = is_numeric($sepa) ? $sepa : '';
         }
         $resultSet = $this->db->select($options);
         if (!empty($resultSet)) {
             if (is_string($resultSet)) {
                 return $resultSet;
             }
             $_field = explode(',', $field);
             $field = array_keys($resultSet[0]);
             $key1 = array_shift($field);
             $key2 = array_shift($field);
             $cols = array();
             $count = count($_field);
             foreach ($resultSet as $result) {
                 $name = $result[$key1];
                 if (2 == $count) {
                     $cols[$name] = $result[$key2];
                 } else {
                     $cols[$name] = is_string($sepa) ? implode($sepa, array_slice($result, 1)) : $result;
                 }
             }
             if (isset($cache)) {
                 S($key, $cols, $cache);
             }
             return $cols;
         }
     } else {
         // 查找一条记录
         // 返回数据个数
         if (true !== $sepa) {
             // 当sepa指定为true的时候 返回所有数据
             $options['limit'] = is_numeric($sepa) ? $sepa : 1;
         }
         $result = $this->db->select($options);
         if (!empty($result)) {
             if (is_string($result)) {
                 return $result;
             }
             if (true !== $sepa && 1 == $options['limit']) {
                 $data = reset($result[0]);
                 if (isset($cache)) {
                     S($key, $data, $cache);
                 }
                 return $data;
             }
             foreach ($result as $val) {
                 $array[] = $val[$field];
             }
             if (isset($cache)) {
                 S($key, $array, $cache);
             }
             return $array;
         }
     }
     return null;
 }