2013-05-13 3 views
0

문자열과 숫자 값이 모두 포함 된 배열이 있습니다.이 코드를 사용하는 동안 배열에서 최대 숫자 값만 가져 오는 방법으로 문자열 값이 계속 유지됩니까?혼합 배열의 최대 숫자

$maxprice = max($textpieces); 

나는이 시도했다 그러나 이것은 당신의 도움을 배열에

$maxprice = max(array_search($textpieces)); 

덕분에 키의 수를 반환! 나는 보았다. 그러나 여기의 최대 기능은 어떤 정보도주지 않는다. http://php.net/manual/en/function.max.php

나는 또한이 해결책을 보았다. Find highest max() of mixed array 그러나 그것은 커스텀 함수를 만들지 않고도 얻을 수 있는가?

$max = array_reduce($textpieces, function($max, $i) { 
    if (is_numeric($i) && $i > $max) { 
     return $i; 
    } 

    return $max; 
}); 

var_dump($max); 

좀 더 성능이 될 수 (모두의 첫째 필터 다음 숫자 만 (정수)를 포함하고 항목 만에서

답변

4
$maxprice = max(array_filter($textpieces, 'is_numeric')); 

그것은

에서 다음과 같은 솔루션을 max()를 추출 CPU 및 메모리 관점)하지만 더 복잡합니다.

+0

아마 uksort() 메소드가 제안하려고했던 것보다 우수 –

+2

이것은 예상대로 작동하지 않습니다. 'ctype_digit'는 문자열이 전달 될 것으로 기대합니다. 값이 정수형의 경우는, 그 정수의 ASCII char 치를 검색합니다. 그것은 숫자에 대한 ascii 값일 경우 true를 반환합니다. 그렇지 않으면 거짓을 반환합니다. –

+0

@ Crayon Violent : 그걸 보여줄 수 있니? – zerkms