日期:2014-05-17 浏览次数:20626 次
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>";
}