정렬 사용자 정의

6200 단어 PHPtech
PHP 표준 정렬 함수는 수치(숫자)만 비교할 수 있습니다.
예를 들어 문자열에 포함된 숫자로 정렬하거나 연상수조의 2차원 값으로 정렬하려면 스스로 알고리즘을 만들어야 한다.
다음은 PHP 초보자 학습회의 공개 채팅에 문제가 있었고, 좋은 샘플이기 때문에 참고로 해봤습니다.

문제.


'수치가 포함된 문자열'의 수치를 토대로 오름차순으로 정렬하려 했으나 예상한 결과를 얻지 못해 곤란했다.
sort () 를 사용할 때 알파벳 순서대로 정렬합니다.
누가 나에게 알려줄 수 있습니까?

대답하다.


<?php
//	...
error_reporting(E_ALL);

//	...
$array = [
	'test1',
	'sio520',
	'mirin1000',
	'satou283',
	'shoyu120',
	'hoge',
];

//	...
uasort($array, function($a, $b){
	//	...
	$a1 = $b1 = $match = null;

	//	...
	if( preg_match('/(\d+)/', $a, $match) ){
		$a1 = $match[1];
	}

	//	...
	if( preg_match('/(\d+)/', $b, $match) ){
		$b1 = $match[1];
	}

	//	...
	if( $a1 > $b1 ){
		return 1;
	}else if( $a1 < $b1 ){
		return -1;
	}

	//	...
	return 0;
});

//	...
foreach( $array as $var ){
	echo $var . '<br/>';
}

좋은 웹페이지 즐겨찾기