数组的排序问题!
$a=array('张三'=>'肆佰贰拾叁','李四'=>'壹佰玖拾','王五'=>'柒佰','孙六'=>'捌仟叁佰陆拾','陈七'=>'肆万伍仟贰佰');
将这个数组按汉子代表的数字大小进行排序,不改变索引,最后输出的结果应为如下格式:
array('李四'=>'壹佰玖拾','张三'=>'肆佰贰拾叁','王五'=>'柒佰','孙六'=>'捌仟叁佰陆拾','陈七'=>'肆万伍仟贰佰');
代码尽量简单 我是新手,最后排序用数组排序函数
回复讨论(解决方案)
$a = array( '张三' => '肆佰贰拾叁', '李四' => '壹佰玖拾', '王五' => '柒佰', '孙六' => '捌仟叁佰陆拾', '陈七' => '肆万伍仟贰佰');$t = array_map('cton', $a);array_multisort($t, $a);print_r($a);function cton($s) { $dw = array('拾' => 10, '佰' => 100, '仟' => 1000, '万' => 10000); $digital = array('零' => 0, '壹' => 1, '贰' => 2, '叁' => 3, '肆' => 4, '伍' => 5, '陆' => 6, '柒' => 7, '捌' => 8, '玖' => 9); $ar = preg_split('/(' . join('|', array_keys($dw)) . ')/', $s, -0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); for($i=0; $i<count($ar); $i+=2) { $res[] = $digital[$ar[$i]] * (isset($ar[$i+1]) ? $dw[$ar[$i+1]] : 1); } return array_sum($res);}
Array( [李四] => 壹佰玖拾 [张三] => 肆佰贰拾叁 [王五] => 柒佰 [孙六] => 捌仟叁佰陆拾 [陈七] => 肆万伍仟贰佰)
$ar = preg_split('/(' . join('|', array_keys($dw)) . ')/',
$s, -0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
这一段能注释一下吗?谢谢
'/(' . join('|', array_keys($dw)) . ')/'
构造一个 /(拾|佰|仟|万)/ 这样的正则规则串
至于 preg_split 函数如何使用,手册中都说的很清楚了

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 배열에서 중복 요소를 제거하기 위해 foreach 루프를 사용하는 방법은 다음과 같습니다. 배열을 순회하고 요소가 이미 존재하고 현재 위치가 첫 번째 항목이 아닌 경우 삭제합니다. 예를 들어, 데이터베이스 쿼리 결과에 중복된 레코드가 있는 경우 이 방법을 사용하면 이를 제거하고 중복된 레코드가 없는 결과를 얻을 수 있습니다.

PHP 배열 키 값 뒤집기 방법의 성능 비교는 array_flip() 함수가 대규모 배열(100만 개 이상의 요소)에서 for 루프보다 더 나은 성능을 발휘하고 시간이 덜 걸리는 것을 보여줍니다. 키 값을 수동으로 뒤집는 for 루프 방식은 상대적으로 시간이 오래 걸립니다.

다차원 배열 정렬은 단일 열 정렬과 중첩 정렬로 나눌 수 있습니다. 단일 열 정렬은 array_multisort() 함수를 사용하여 열별로 정렬할 수 있습니다. 중첩 정렬에는 배열을 순회하고 정렬하는 재귀 함수가 필요합니다. 실제 사례로는 제품명별 정렬, 판매량 및 가격별 복합 정렬 등이 있습니다.

PHP에서 배열을 깊게 복사하는 방법에는 json_decode 및 json_encode를 사용한 JSON 인코딩 및 디코딩이 포함됩니다. array_map 및 clone을 사용하여 키와 값의 전체 복사본을 만듭니다. 직렬화 및 역직렬화를 위해 직렬화 및 역직렬화를 사용합니다.

PHP에서 배열 전체 복사를 수행하는 가장 좋은 방법은 json_decode(json_encode($arr))를 사용하여 배열을 JSON 문자열로 변환한 다음 다시 배열로 변환하는 것입니다. unserialize(serialize($arr))를 사용하여 배열을 문자열로 직렬화한 다음 새 배열로 역직렬화합니다. RecursiveIteratorIterator를 사용하여 다차원 배열을 재귀적으로 순회합니다.

PHP의 array_group_by 함수는 키 또는 클로저 함수를 기반으로 배열의 요소를 그룹화하여 키가 그룹 이름이고 값이 그룹에 속한 요소의 배열인 연관 배열을 반환할 수 있습니다.

PHP에는 배열을 사용자 정의 순서로 정렬하는 두 가지 방법이 있습니다. 사용자 정의 비교기: Comparable 인터페이스를 구현하고 두 객체의 비교 규칙을 지정합니다. 익명 함수: 두 개체를 기준과 비교하는 사용자 지정 비교기로 익명 함수를 만듭니다.

PHP의 array_group() 함수를 사용하면 지정된 키로 배열을 그룹화하여 중복 요소를 찾을 수 있습니다. 이 함수는 다음 단계를 통해 작동합니다. key_callback을 사용하여 그룹화 키를 지정합니다. 선택적으로 value_callback을 사용하여 그룹화 값을 결정합니다. 그룹화된 요소 수를 계산하고 중복 항목을 식별합니다. 따라서 array_group() 함수는 중복된 요소를 찾고 처리하는 데 매우 유용합니다.
