개발 꿀팁/PHP

PHP는 과학적 카운트 포맷을 숫자 문자열로 변환하고, PHP는 필드 varchar 타입으로 비교 정렬합니다

Jammie 2022. 7. 1. 14:11
반응형

서문: API 인터페이스를 쓸 때, 작은 게임 앞부분에서 전송된 데이터는 과학적으로 계수된 문자 형식입니다. 예를 들어 1.2345678987654321e+30입니다. 이 경우 백그라운드 처리는 데이터를 비교 정렬해야 합니다.

1.필드로 varchar 타입 비교 정렬하기

'CAST(`cashnum_week` AS UNSIGNED)
$list = $wx_user->field('id,user_name,head_img,cashnum_week')
            ->where(['status'=>1])
            ->order('CAST(`cashnum_week` AS UNSIGNED) DESC')
            ->select();

필드 cashnum_week를 부호화하지 않고 직접 변환합니다. 이 때 정렬하기

2.사이언스 카운트 포맷을 문자열로 변환

과학적으로 숫자를 세어라: 1.2345678987654321e+30 '123456789' 문자열로 변환876543210000000000000’

우선 변수를 분할하여 재구성한 결과를 얻을 수 있다

구현 원리: (1) 1.2345678987654321e+30을 1로 분할한다..2345678987654321과 + 30

(2) 1.2345678987 사용 중654321에 10을 곱한 30승,10의 30승은 php함수 pow(10,30)로 도출된다.

a.첫 번째 방법은 가장 일반적인 생각에서 출발한다.

public function sctonum($num){
    if(false !== stripos($num, "e")){
        $a = explode("e",strtolower($num));
        $b = $a[0] * pow(10,$a[1]);
        return $b;
    }else{
        return $num;
   }
}

b.순환으로 이끌어 내다

 
public function numToStr($num)
{
	$result = "";
	if (stripos($num, 'e') === false) {
		return $num;
	}
	while ($num > 0) {
		$v = $num - floor($num / 10) * 10;
		$num = floor($num / 10);
		$result = $v . $result;
	}
	return $result;
}

c.모든 것을 php함수로 구하다

public function sctonum($num, $double = 5){
    if(false !== stripos($num, "e")){
        $a = explode("e",strtolower($num));
        return bcmul($a[0], bcpow(10, $a[1], $double), $double);
    }else{
        return $num;
    }
}
//붓다$double 소수 자리입니다. 기본값으로 없음

총결산 및 건의: 만인의 눈에는 만 개의 해리 포터가 보인다!각각의 결과는 다른 과정에 의해 실현될 수 있습니다. 먼저 자신의 가장 편리한 방법을 사용하고, 그 다음에 최적화하고, 그 다음에 이해 가능하고 효율적인 방법, 예를 들어 c, 간결하고 효율적입니다

반응형

'개발 꿀팁 > PHP' 카테고리의 다른 글

centos에서 php5.3에서 php5.6으로 업그레이드  (0) 2022.07.01
PHP 설치Xdebug  (0) 2022.07.01
PHP 8대 디자인 패턴  (0) 2022.06.30
PHP 구현 파일 업로드  (0) 2022.06.30
PHP php-fpm을 다시 시작하는 몇 가지 방법  (0) 2022.06.30