2012-06-25 4 views
5

저는 PHP와 같은 표준 형식 배열을 가지고 있습니다. 15 분마다 10 시간, 10 분마다 15 분, 40 시간마다 값을 계산해야합니다. 이 값들을 각각 하드 코딩하는 대신 PHP를 사용하여 일종의 배열로 자동화 할 수 있습니까? 더 좋은 방법이 있어야만하는 것처럼 보일뿐입니다. 시작하는 방법을 모릅니다.PHP의 동적 선택 배열

<select size="1" name="labor" id="labor"> 
    <option value="80">2 Hours</option> 
    <option value="70">1 Hour 45 min.</option> 
    <option value="60">1 Hour 30 min.</option> 
    <option value="50">1 Hour 15 min.</option> 
    <option value="40">1 Hour</option> 
    <option value="30">45 Minutes</option> 
    <option value="20">30 Minutes</option> 
    <option value="10">15 Minutes</option> 
</select> 
+4

시간 (10 분, 5 분 등)이 변경되는 것을 보지 않는 한, 하드 코딩이 잘되고, PHP로 항상 재연 신하는 것이 더 빠르다는 것을 알고 계십니까? 물론 PHP 코드를 사용하여 목록을 생성 할 수 있으며, 그 코드를 다른 사람이 짧은 시간 안에 약간 다른 변수를 가진 목록을 재현하기 위해 가까운 곳에 주석으로 남겨두면 1 년 후에 다시 정적으로 유지됩니다. – Wrikken

답변

2

아마도 솔루션을 쉽게 하드 코딩 할 수 있습니다. 코드를 매우 깨끗하고 쉽게 유지할 수 있기 때문에 @Wrikken이 언급 한대로이 상황이 괜찮은 상황 중 하나라고 생각합니다 (1 년에서 2 년 후에 다시 돌아올 것이라고 상상해보십시오). 또한이 상황은 데이터베이스 테이블로도 매우 잘 처리 될 수 있습니다.

$list = array(); 
$list['10'] = '15 Minutes'; 
.... 

그런 다음 전체 배열을 반복하여 드롭 다운을 생성 :

<select size="1" name="labor" id="labor"> 
<?php 
    foreach($list as $value => $desc){ 
    $option = "<option value=$value>" . $desc . "</option>"; 
    echo $option; 
    } 
?> 
</select> 
+0

하드 코드를 사용 했으므로 배열 없이도 나중에 옵션을 쉽게 변경할 수 있습니다. 말이된다. 도와 주셔서 감사합니다! –

0

같은 :

이 if 문에
<select size="1" name="labor" id="labor"> 
<?php 
for ($x = 1; $x < 11; $x++) { 
    echo '<option value="'; 
    echo $x*10; 
    echo '">'; 
    echo $x*15; 
    echo " Minutes</option>"; 
} 
?> 
</select> 

던져되도록 한번 분리해서 행 (X/10 * 15)> 60가 90분의 75을 갖는 대신에 시간에 걸쳐 수행 시작/105/120 분.

2

10 단위 증가 값과 사용자 표시 값의 두 값이 필요합니다. (40)에 1 $i 이상 for 루프 (또는 다른 변수)를 실행하고 루프 내부에 값을 계산 :

  • 10 증가가 쉽습니다, 그냥 열로 $i를 곱합니다.
  • 표시된 값에 대해 총 15 분을 얻기 위해 15를 곱하십시오. 그런 다음 modulo operator (분이 표시)과 표준 divison (시간 표시)을 사용하여 시간과 분으로 변환하십시오.
1

이 그것을해야

처음 사용하는 배열은 당신에게 값과 설명을 저장합니다. $ i의 시작 번호를 드롭 다운에 포함되어야하는 총 시간 (분)으로 변경하십시오. 이제 750 분으로 설정되었습니다.

echo '<select>'; 
for ($i = 750; $i >= 15; $i -= 15) { 

    $hours = $i/60; 
    $min = $i % 60; 

    echo '<option>'; 

    if ($hours >= 1) 
     echo floor($hours)." Hours "; 

    if ($min > 1) 
     echo $min." Minutes"; 

    echo '</option>'; 
} 
echo '</select>'; 

참고 :이 코드는 완벽하지 않습니다, 시작 번호가 균등하게 원하는 결과를, (단, 작동) 생성 (15)와 구분 될 필요가있다.

+0

'floor()'를 사용하지 말 것'round()' –