2016-08-01 11 views
1

我創建了一個表格,並提交一個數組創建一個數組,查找最大的,從一個表單提交

array(
'name' => 'John', 
'score1' => '50', 
'score2' => '90', 
'score3' => '75', 
); 

我想最大的搜索,從提交的數組,但它總是檢測爲串。因此,結果總是約翰

<form action="" method='post'> 
<?php 
$dr  = array('Brian','Mike','John'); 
$prd = array('score1','score2','score3'); 

foreach($dr AS $d){ 
    echo "<input name=txt[$d][dr] value='".$d."' size=3 readonly>"; 

    foreach($prd AS $p){ 
     echo "<input type=text name=txt[$d][".$p."] size=3 value=0> "; 
    } 
    echo "<hr>"; 
} 

?> 
<input type='submit' name='submit'> 
</form> 
<?php 
if($_POST['submit']){ 
    foreach($_POST['txt'] AS $v){ 
     $max = max($v); 
     $v['max'] = $max; 
     var_dump($v); 
    } 
} 
?> 

代碼: http://phpfiddle.org/lite/code/9tnu-p6yd

回答

1

您提供一個字符串數組到max功能,在這種情況下,在文檔http://php.net/manual/en/function.max.php

描述該功能將表現使用標準的 比較規則比較不同類型的值。例如,一個非數字字符串將被比作 到一個整數,就像它是0一樣,但多字符串值將是 比較字母數字。返回的實際值將是原始類型的 ,不應用任何轉換。

替換您的這部分代碼

if($_POST['submit']){ 
    foreach($_POST['txt'] AS $v){ 
     $max = max($v); 
     $v['max'] = $max; 
     var_dump($v); 
    } 
} 

與此

if($_POST['submit']) { 
    foreach($_POST['txt'] AS $v) { 
     $scores = []; 
     foreach ($v as $key => $val) { 
      if (preg_match('/^score/i', $key)) { 
       $scores[] = (int)$val; 
      } 
     } 

     $max = max($scores); 
     $v['max'] = $max; 
     var_dump($v); 
    } 
}