页:
[1]
| buntime | 2007-3-17 03:30 PM |
|
发一段代码,看看大家能优化不?
发一段代码,看看大家能优化不?
[php]<?php
//成份列表
//重複出現的東西,出現率會比較高。總長度建議不要超過255。
$elements=array(
'屍毒',
'御宅氣',
'高手高手高高手',
'雜魚',
'高頻雜訊',
'黑暗',
'死靈怨影',
'三鋰水晶',
'空間扭曲',
'時空斷層',
'微型黑洞',
'微波雷射',
'化屍水',
'王水'
);
//方便使用的str_split,撿來的
//str_split在PHP5有,但是PHP4沒有 T__T
if(!function_exists('str_split')){
function str_split($string,$split_length=1){
$count = strlen($string);
if($split_length < 1){
return false;
} elseif($split_length > $count){
return array($string);
} else {
$num = (int)ceil($count/$split_length);
$ret = array();
for($i=0;$i<$num;$i++){
$ret[] = substr($string,$i*$split_length,$split_length);
}
return $ret;
}
}
}
//傳入整數(或整數字串)X,pointer會向後移動X,然後傳回該位置的元素名。
//到陣列結尾就重頭開始
$pointer=0;
function get_element($id){
if(!is_numeric($id)) return 'Error!';
else{
global $elements;
global $pointer;
eval("\$pointer+=$id;");
$pointer%=count($elements);
return $elements[$pointer];
}
}
$result_string='';
if( isset($_POST['name']) && $_POST['name']!=''){//結果模式
if(strlen($_POST['name']) > 256){//對名字長度作出限制,以免Hash跑太久
$result_string='您輸入的名字太長了。';
}
else{//計算結果
$input_string = strtoupper($_POST['name']);
$input_hash = md5($input_string);
$hase_length=strlen($input_hash);
$chunks=str_split($input_hash,2);
// $elist[成份名稱]=成份含量
$total_quantity=0;//成份總量
for($i=0; $i < count($chunks); $i+=2){
$current_component=get_element("0x{$chunks[$i]}");
eval("\$current_quantity=0x{$chunks[$i+1]};");
$current_quantity*=$current_quantity*$current_quantity;//三次方,將大量成份跟少量成分的距離拉大
$total_quantity+=$current_quantity;
if(isset( $elist[$current_component] ) ){
$elist[$current_component]+=$current_quantity;
}
else{
$elist[$current_component]=$current_quantity;
}
}
//sort
arsort($elist);
$result_string.="<p>{$_POST['name']}的成分:</p>\n<ul>\n";
foreach($elist as $k => $v){
$percent=number_format( 100*$elist[$k]/$total_quantity, 2);
if( ereg('0.0[0-9]',$percent) ) continue;//太少的東西就不顯示了
else{
$result_string.="<li>{$k}:{$percent}%</li>\n";
}
}
$result_string.="</ul>\n<hr />\n";
}
}//結果輸出模式結束
?>
<html><head><title>题目</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body>
<?php echo($result_string); ?>
<form name="form1" id="form1" method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
<p>請輸入你的名字:<input name="name" type="text" id="name" maxlength="256" /></p>
<p><input type="submit" name="Submit" value="分析結果" /></p>
</form>
</body></html>
[/php] |
| buntime | 2007-3-18 05:09 PM |
|
| 大家都说说吧! |
Powered by Discuz! Archiver 6.1.0
© 2001-2006 Comsenz Inc.
Processed in 0.009316 second(s), 2 queries |