2011-04-12 153 views
1

我檢查,我不發現錯誤:這個循環有什麼問題?

$_SESSION['variable'] = 2 
$preparado[1] = "Miguel"; 
$preparado[2] = "Carlos"; 
$segundo[1]= "Beltran"; 
$segundo[2] = "Sanz"; 

for($i = 1; $i <=$_SESSION['variable']; $i++){ 
    $listo[$i] = $preparado1[$i] . $segundo[1]; 
} 


for($i = ($_SESSION['variable'] + 1) ; $i <= ($_SESSION['variable'] * 2); $i++){ 
    for($n = 1; $n <=$_SESSION['variable']; $n++){ 
    $listo[$i] = $preparado1[$n] . $segundo[2]; 
    } 
} 

for($i = 1;$i <=$_SESSION['variable'] * $_SESSION['extension']; $i++){ 
    echo $final[$i] . "</br>"; 
} 

我recibe這樣的:

MiguelBeltran 
CarlosBeltran 
CarlosSanz 
CarlosSanz 

但我應該recibe這樣的:

MiguelBeltran 
CarlosBeltran 
MiguelSanz 
CarlosSanz 

謝謝!

回答

3

我猜你打算

$preparado[0] = "Miguel"; // rather than [1] 
$preparado[1] = "Carlos"; 
+0

這是沒有問題的,我該怎麼正確的,但感謝! – 2011-04-12 18:38:27

+0

真正的麻煩來自嵌套的'for'循環。第一個從i + 1到i * 2 - 這很好(有點不尋常,但它的工作原理)。但是,*對於每個可能的值*,您遍歷從1到'變量'的所有值* n *。考慮到你如何存儲結果,我很確定這不是你想要的。所以請繼續檢查你的循環邏輯。 – 2011-04-12 18:47:40

0
$preparado[1] = "Miguel"; 
$preparado[1] = "Carlos"; 
$segundo[1]= "Beltran"; 
$segundo[2] = "Sanz"; 

您分配$preparado[1]兩次。

+0

這是一個typografy錯誤,但在原始代碼中這是正確的,因爲是由另一個循環生成的。 – 2011-04-12 18:43:58

1

您發佈的代碼是不是你提出的輸出一致:

  1. 有沒有辦法你會得到你的輸出Miguel爲你做:

    $preparado[1] = "Miguel"; 
    $preparado[1] = "Carlos"; 
    

    所以唯一的變量,你被分配Miguel,被覆蓋下一行。

  2. 沒有變量$preparado1

您應該發佈您實際用於生成輸出的代碼。

+0

這是一個typografy錯誤,但在原始代碼中這是正確的,因爲是由另一個循環生成的。 – 2011-04-12 18:42:28

1

考慮:

$_SESSION['variable'] = 2 
$preparado[1] = "Miguel"; 
$preparado[2] = "Carlos"; 
$segundo[1]= "Beltran"; 
$segundo[2] = "Sanz"; 

用途:

for ($i = 1; $i <= $_SESSION['variable']; ++$i) { 
    for ($j = 1; $j <= $_SESSION['variable']; ++$j) { 
     $listo[] = $preparado[$j].$segundo[$i]; 
    } 
} 
+0

不起作用,$ listo []應該繼續第一個循環,謝謝! – 2011-04-12 19:04:02