2013-10-23 49 views
0

我正在使用while循環保存數據...我想縮短冗長的代碼
我需要爲每個項目編寫代碼並將$ counter值作爲變量的一部分。while循環中的較短代碼

我會搜索並以我個人的測試,但我不知道如何來定義搜索
,所以我會盡力解釋....

說我有必要做這樣的事情:

$xvalue_1 = $_POST['VALUE 1']; 
    $xvalue_2 = $_POST['VALUE 2']; 
    $xvalue_3 = $_POST['VALUE 3']; 
    $xvalue_4 = $_POST['VALUE 4']; 
    $xvalue_5 = $_POST['VALUE 5']; 

    $yvalue_1 = $_POST['VALUE 1']; 
    $yvalue_2 = $_POST['VALUE 2']; 
    $yvalue_3 = $_POST['VALUE 3']; 
    $yvalue_4 = $_POST['VALUE 4']; 
    $yvalue_5 = $_POST['VALUE 5']; 

    $zvalue_1 = $_POST['VALUE 1']; 
    $zvalue_2 = $_POST['VALUE 2']; 
    $zvalue_3 = $_POST['VALUE 3']; 
    $zvalue_4 = $_POST['VALUE 4']; 
    $zvalue_5 = $_POST['VALUE 5']; 

    // SAVING HERE 
    some_save_todb_func($xvalue_1); 
    some_save_todb_func($xvalue_2); 
    some_save_todb_func($xvalue_3); 
    some_save_todb_func($xvalue_4); 
    some_save_todb_func($xvalue_5); 

    some_save_todb_func($yvalue_1); 
    some_save_todb_func($yvalue_1); 
    some_save_todb_func($yvalue_1); 
    some_save_todb_func($yvalue_1); 
    some_save_todb_func($yvalue_1); 

    some_save_todb_func($zvalue_1); 
    some_save_todb_func($zvalue_1); 
    some_save_todb_func($zvalue_1); 
    some_save_todb_func($zvalue_1); 
    some_save_todb_func($zvalue_1); 


使用foreach
這個例子清楚地不工作怎麼能縮短...需要,使其工作
我嘗試使用「變量varible」這樣做的,失敗...

 $xvalue_1 = $_POST['VALUE 1']; 
    $xvalue_2 = $_POST['VALUE 2']; 
    $xvalue_3 = $_POST['VALUE 3']; 
    $xvalue_4 = $_POST['VALUE 4']; 
    $xvalue_5 = $_POST['VALUE 5']; 

    $yvalue_1 = $_POST['VALUE 1']; 
    $yvalue_2 = $_POST['VALUE 2']; 
    $yvalue_3 = $_POST['VALUE 3']; 
    $yvalue_4 = $_POST['VALUE 4']; 
    $yvalue_5 = $_POST['VALUE 5']; 

    $zvalue_1 = $_POST['VALUE 1']; 
    $zvalue_2 = $_POST['VALUE 2']; 
    $zvalue_3 = $_POST['VALUE 3']; 
    $zvalue_4 = $_POST['VALUE 4']; 
    $zvalue_5 = $_POST['VALUE 5']; 

    $counter = 1; 
    while($counter < 5) { 

     // TRYING TO USE THE COUNTER AS VARIABLE 
     // WHICH IS PART OF THE VARIABLE... 
     some_save_todb_func($xvalue_{$counter}); 
     some_save_todb_func($yvalue_{$counter}); 
     some_save_todb_func($zvalue_{$counter}); 

     $counter++; 
    } 

我沒有官方的PHP培訓,所以如果我的問題看起來很愚蠢,我很抱歉。 會apreaciate在這裏你的幫助......

EDIT 1(希望最後一次編輯)

$xvalue_1 = 'xvalue 1 var'; 
$xvalue_2 = 'xvalue 2 var'; 
$xvalue_3 = 'xvalue 3 var'; 
$xvalue_4 = 'xvalue 4 var'; 
$xvalue_5 = 'xvalue 5 var'; 

$yvalue_1 = 'yvalue 1 var'; 
$yvalue_2 = 'yvalue 2 var'; 
$yvalue_3 = 'yvalue 3 var'; 
$yvalue_4 = 'yvalue 4 var'; 
$yvalue_5 = 'yvalue 5 var'; 

$zvalue_1 = 'zvalue 1 var'; 
$zvalue_2 = 'zvalue 2 var'; 
$zvalue_3 = 'zvalue 3 var'; 
$zvalue_4 = 'zvalue 4 var'; 
$zvalue_5 = 'zvalue 5 var'; 

$counter = 1; 
while($counter < 6) { 

    $xvalue = 'xvalue_'.$counter; 
    $yvalue = 'yvalue_'.$counter; 
    $zvalue = 'zvalue_'.$counter; 

    echo $$xvalue."<br />"; 
    echo $$yvalue."<br />"; 
    echo $$zvalue."<br />"; 

    $counter++; 
} 
+0

與[可變變量( http://php.net/manual/en/language.variables.variable.php)(是的,糟糕的名字),你應該使用數組。 –

+0

你能分享一個例子嗎?請記住,我正在嘗試縮小代碼的大小,而不是將它膨脹;) –

+0

那麼,在給出的示例中,我會將它放在5行左右的代碼中,但這取決於您的實際使用情況。例如。我假設'$ _POST'名稱不像你的例子那樣是連續的?將它們保存到數據庫之後,你會需要這些變量嗎? –

回答

2

您可以使用variable variables,或(事後通過數組和循環)建立一個數組來做到這一點。看起來,如果你的循環控制結構正確,你可以在循環中調用你的數據庫保存功能,而不是分配變量。

$letters = array('x', 'y', 'z'); 
$max_number 5; 

$array = array(); 

foreach($letters as $letter) { 

    for($i = i; $i <= 5; $i++) { 
     // set variable variable 
     $var_name = $letter . 'value_' . $i; 
     $$var_name = $_POST['VALUE ' . $i]; 
     // you probably won't need to do that using these loops though, just call the function: 
     some_save_todb_func($_POST['VALUE ' . $i]); 
     // ... or set array value 
     $array[$varname] = $_POST['VALUE ' . $i]; 
    } 

} 

唯一的例外就是我說了頂部是,如果你插入了很多類似的數據到同一個表,你可能想通過使用一個插入查詢加快腳本,在這種情況下,使用上面的數組選項,然後調用$str_of_values = implode("','", $array);以獲得字符串,您可以在這樣的MySQL查詢中插入:...VALUES('$str_of_values')

要看你以後,但雖然這是可以做到的變量變量將分配一個長長的清單你起身頂部,並保存你的文件大小...

+0

好吧...試着去測試和理解;) - brb ... –

+0

所以...堅持我的例子(PLZ;)我已經添加了一個編輯我的答案 - 這是「正確」的方式? –

+0

好吧..我的編輯作品 - 感謝您幫助理解這一點;) –