2014-01-24 7 views
0

다음과 같은 일을하려고합니다.foreach 루프가있는 루프가 있습니까? PHP

for 루프를 실행하고 시간 옵션이있는 7 개의 선택 상자 세트를 생성하십시오. 지금 당장이 루프가 잘 작동합니다. 이것은 요일별 이벤트 시작 시간이있는 양식입니다.

사용자가 값을 변경하려면 데이터베이스에 입력 한 값과 동일한 7 개의 상자를 생성하고 싶습니다. 해당 날짜에 원래 선택된 값을 추가하고 싶습니다. 상자들. 시간

$times = array(array('num' => 70000, 'dec' => '07:00:00', 'clock' => '7:00am'), array('num' => 71500, 'dec' => '07:15:00', 'clock' => '7:15am') etc… 

이 선택 옵션을 생산

foreach ($times as $time) { 
    echo '<option value="' . $time['num'] . '"'; if ($event == $time['dec']){echo 'selected="selected"';}; 
      echo '>'; 
      echo $time['clock']; 
      echo '</option>'; 
} 

시간 배열에 대한

foreach 루프.

그런 다음 foreach를 사용하여 기존 값을 가져옵니다.

foreach ($event -> Selected as $select) { 
    $event = $select -> Start; 
} 

는 3 개 기록이 존재하는 경우, 내가 3 개 기록이 존재하는 경우 DB 값으로 처음 3 개 선택과 7 선택을 생산하기 좋아하고 4 개 빈 선택

것이 지금 작업 만 3 선택 말을 생산하고있다
+0

정확하게 foreach()를 만들기 전에'$ times = array_merge ($ times, array_fill (0, 7-count ($ times)); –

답변

1

배열에는 제한된 수의 항목 만 포함되므로 루프는이 번호까지만 반복됩니다.

배열에 엘레멘트가 몇 개 있는지 확인하고 나머지는 빈 값을 출력하여이 문제를 해결할 수 있습니다.

예컨대 루프 후 다음을 추가

$count = 7 - count($times); 
for($i = 0; $i < $count; $i ++) 
{ 
    echo '<option></option>'; 
} 

상기 값 아래로 강하 7이되도록하는 빈 엔트리를 출력하는 간단한 루프이다.

0

당신은 당신의 foreach는 전에이 작업을 수행 할 수 있습니다 :

$desired = 7; 
$extra = array_fill(0, $desired - count($times)); 
$times = array_merge($times, $extra); 

은 항상 한 $desired의 수와 같은 수 배열 $times를 만들 것입니다.

관련 문제