日期:2014-05-17 浏览次数:20498 次
function foo($s){ $arr=str_split($s); if(in_array('9',$arr)) return (array_sum($arr)==10) ; sort($arr,SORT_NUMERIC); return array_sum($arr)==$arr[1]*3 ; } var_dump(foo('019')); //bool(true) var_dump(foo('243')); //bool(true)
------解决方案--------------------
一般的,对于 $n, $n∈{123 321 456 654 465 ..}
可以有:
$t = str_split($n);
if( array_sum($t) == (reset($t)+end($t))*count($t)/2 ) echo 'ok';
但是对于认定 901、109 为连续,就超出一般的认知了
------解决方案--------------------
不能判断能够相加被3除就行,比如 258..
------解决方案--------------------
$temp = '0123456789 089 019'; $samples = array(123, 321, 456, 654, 465, 901, 109, '019', 890, 908, 135, 250); foreach ( $samples as $value ) { $ds = str_split( $value ); sort( $ds ); $ds = implode( '', $ds ); $result = ( strstr( $temp, $ds ) !== false ) ? 'yes' : 'no'; echo "{$value} - {$ds} : {$result}<br>"; }