2014-09-19 4 views
0

저는 PHP에 대해 아직 아주 익숙하지 않아 도움이 될지 궁금합니다. 나는 내부 루프를 가진 while 루프를 사용하여 연관 배열을 반복하면서 차트를 생성해야한다. 하지만 무한 루프가 계속 발생하며이를 수정하는 방법에 대해 완전히 확신 할 수는 없습니다. 나는 또한 if 진술 조건이 도움이되지 않는다고 의심하지만, 나도 모른다. 나는 무엇을 놓치고 이것에 대해 갈 좋은 방법이 있습니까? 여기 while 루프를 사용 할 필요가while 루프 안에서 foreach 루프를 사용하려고하면 무한 루프가 계속 발생합니다.

<?php 
$data = 
"DodgeAvenger 2006 DA111-9 4 35.50 105 3727.50 21297.00 8795 .20 Monthly 
Olds_Alero 2004 OA340-1 5 29.95 126 3773.70 23335.00 36010 .20 Monthly 
Chry_PT_Crsr 2003 CPTC-MW2 4 37.95 26 986.70 15405.00 29020 .20 Weekly 
Cadillac_Limo 1999 1999-01 18 142.50 4 570.00 38900.00 187419 .10 Weekly 
Chev_M_Carlo 1997 CMC-21 6 27.30 55 1501.50 19437.50 113689 .20 Monthly 
Chev_Suburban 1997 CSB-011 8 42.75 17 726.75 29999.00 137560 .20 Monthly 
VW_Bus_T2A 1977 VWB-09 32 15.00 16 240.00 12000.00 397800 NA Daily 
Ford_Stn_Wgn 1976 FSW-67 8 10.95 6 65.70 9899.00 149379 NA Whenever 
Toy_Forklift 1997 6FGCU-45 1 61.25 65 3981.25 8795 732 .10 Yearly 
Cat_Dozer(D7H) 1989 1989-11 1 98.00 5 490.00 67850.00 1304 .10 Yearly 
"; 
?> 
+0

동안 루프의 목적은 무엇인가? – sectus

+2

'if ($ key! == [ 'seats'] || [ 'deprec'] || [ 'freq'])'는 ($ key! == [ 'seats'] || $ key! == [ 'deprec'] || $ key! == [ 'freq'])'또는 실제로 원하는 것에 따라 영향을 미친다 – mseifert

+0

당신의 루프는 항상 그렇습니다. 진실 인 조건을 찾아내는 것처럼 실행하십시오. while ($ condtion) 코드를 실행합니다. 조건이 항상 거짓이면 condtion이 참이 될 때까지 이것을 실행하는 것을 의미합니다. 항상 뛰기보다. –

답변

2

: 요구하지 여기

<?php 
include 'davesinventory.php'; 
$delimiter = " \n"; 
$inventory['name'] = rtrim(strtok($data, $delimiter)); 
$inventory['year'] = rtrim(strtok($delimiter)); 
$inventory['serial'] = rtrim(strtok($delimiter)); 
$inventory['seats'] = rtrim(strtok($delimiter)); 
$inventory['charge'] = rtrim(strtok($delimiter)); 
$inventory['days'] = rtrim(strtok($delimiter)); 
$inventory['rev'] = rtrim(strtok($delimiter)); 
$inventory['orig'] = rtrim(strtok($delimiter)); 
$inventory['miles'] = rtrim(strtok($delimiter)); 
$inventory['deprec'] = rtrim(strtok($delimiter)); 
$inventory['freq'] = rtrim(strtok($delimiter)); 

printf("<b> VEHICLE\tYEAR\t SERIAL#\t RENT COST\t DAYS OUT\t REVENUE\t ORIG. PRICE\t MILEAGE\t NOTES\n</b>"); 
?> 
<hr> 
<?php 
while($inventory['name']){ 
    foreach($inventory as $key => $vehicles){ 
     if ($key !== ['seats'] || ['deprec'] || ['freq']) 
      { 
      print $vehicles; 
      } 
      else if($key == ['seats'] || ['deprec'] || ['freq']) 
      { 
      echo " "; 
      } 
    } 
} 
?> 
<pre> 

을이 '포함'파일입니다 :

여기에 문제의 코드입니다. Foreach이면 충분합니다.

<?php  
    if(isset($inventory['name'])){ 
     foreach($inventory as $key => $vehicles){ 
      if ($key !== 'seats' || $key !=='deprec' || $key !=='freq') 
      { 
       print $vehicles; 
      } 
      else{ 
       echo " "; 
      } 
     } 
    } 
?> 
+0

그의 잘못된'if' 문을 고쳐야합니다. – Barmar

+0

답변 해 주셔서 감사합니다. – Nick

+0

@ 닉은 당신을 위해 일 했나요 ?? –

1

Blank's answer이 적합합니다. 광산은 실제로 코멘트가되어야하지만 답안에서 코드를 포맷하는 것이 훨씬 쉽습니다. while를 사용하는 숙제 나 시험 단지 성가신 요구 사항 인 경우

(귀하의 의견에 따라 ...) 당신은 간단하게 해결할 수 있습니다

$finished = false; 

while (!$finished) 
{ 
    //do all the work here - foreach loop and so on 

    $finished = true; 
} 
+0

thats true ... !! :) –