2017-02-09 2 views
0

그래서 payout_dates.txt이라는 파일이 있는데이 파일은 매우 비슷하게 보입니다. 나는 또한 다음 줄의 텍스트를 표시한다 달성하기 위해 노력하고있어 선별 된 옵션으로 그들을 문서의 각 라인을 통해 이동하고 표시하면서 기능을 사용하여 아래시퀀스의 echo next array 값

01/01/17 
01/02/17 
01/03/17 
... 

. 예를 들어 나는 %1$s을 사용하여 현재 첫 번째 결과를 반향 출력하므로 %2$s과 같은 결과가 필요합니다. 01/01/17 to 01/02/17 등등 등등처럼 보이는 옵션을 선택의 결과

echo sprintf(' <option value="%1$s">%1$s to %2$s</option>'."\n", trim($dates)); 

.

<?php 
    $payout_dates = file('/path/payout_dates.txt'); 

    for($i = 0; $i < count($payout_dates) - 1; $i++) 
    { 
     $curDate = trim($payout_dates[$i]); 
     $nextDate = trim($payout_dates[$i+1]); 

     echo sprintf('<option value="%1$s">%1$s to %2$s</option>'."\n", $curDate, $nextDate); 
    } 

이 결과 도움이 될

<? 
    $payout_dates = fopen('/path/payout_dates.txt', 'r'); 
    while ($dates = fgets($payout_dates, 1024)) { 
     echo sprintf(' <option value="%1$s">%1$s</option>'."\n", trim($dates)); 
    } 
?> 
+0

이와 같은 경우에는 가장자리 케이스에 표시 할 항목을 지정해야합니다 (예 : 파일에 항목이 하나만 있거나 항목 수가 홀수 인 경우 - 마지막으로 표시하려면 어떻게합니까?) – ccKep

+0

@ccKep 그래,이 경우에는 문제가 될 수 있지만이 경우 엔 균일 한 항목이 있습니다 :) –

+0

파일의 크기는 얼마나됩니까? – Justinas

답변

0

(RAM에 맞게 여전히 추가 처리를 위해 RAM을 떠난 것입니다).

$lines = file('/path/payout_dates.txt'); 

foreach ($lines as $line => $content) { 
    $content = trim($content); // line will contain \r\n 
    $next = isset($lines[$line+1]) ? trim($lines[$line+1]) : null; 
    echo "<option value='{$content}'>from {$content}".(!empty($next) ? " to {$next}" : ''); 
} 
0

내 현재 코드 :

<option value="01/01/17">01/01/17 to 01/02/17</option> 
<option value="01/02/17">01/02/17 to 01/03/17</option> 
<option value="01/03/17">01/03/17 to 01/04/17</option> 
<option value="01/04/17">01/04/17 to 01/05/17</option> 
+0

짝수 또는 홀수 행과 관련이있는 것은 무엇입니까? – Cashbee

+0

@ 캐시 이제 더 이상 아무것도 기억하지 못했습니다. 편집 기록을 참조하십시오 ;-) – ccKep

0

당신은 변수에 $ 날짜의 현재 값을 저장해야하고 다음 반복에서이를 에코합니다.

이 코드는 항상 한 줄을 파일에있는 줄보다 적게 표시합니다. 파일이 매우 큰되지 않은 경우 file() 기능을 사용할 수있는 것보다

<?php 
    $payout_dates = fopen('/path/payout_dates.txt', 'r'); 

    $lastDate = ''; 
    while ($dates = fgets($payout_dates, 1024)) { 
     if($lastDate = ''){ 
      $lastDate = trim($dates); 
     } else { 
      $thisDate = trim($dates); 
      echo sprintf(' <option value="%1$s">%1$s to %2$s</option>'."\n", $lastDate, $thisDate); 
      $lastDate = $thisDate; 
     } 
    } 
?> 
0

내 대답은

<?php 
    $payout_dates = fopen('payout_dates.txt', 'r'); 
    $preview = false; 
    $html = '<select>'; 
    while ($dates = fgets($payout_dates, 1024)) { 
     $html .= ($preview) 
      ? sprintf('<option value="%1$s">%1$s to %2$s</option>'."\n", trim($preview),trim($dates)) 
      :''; 
     $preview = $dates; 
    } 
    echo($html.'</select>'); 
?> 

그러나 https://stackoverflow.com/a/42131125/6390681 멋지게 보이는 좀 더 긍정적 https://stackoverflow.com/a/42131113하지만 내와 유사하다.