2011-12-19 80 views
3

我有幾個$ _ POST變量,它們是

$_POST['item_number1'] 
$_POST['item_number2'] 

我需要寫一個循環塔將顯示所有變量的值(我不知道有多少)。什麼是最簡單的方法呢?如果我知道我有多少變數,那麼最簡單的方法是什麼?

+1

你是從一種形式獲得這些價值?可以通過將form元素設置爲:name ='item_number []'style來使用表單數組樣式,以便您可以循環訪問$ _POST變量中的那個數組。 – Blake 2011-12-19 21:42:54

回答

14

這呼應了所有的POST參數的名字開始item_number

foreach($_POST as $k => $v) { 
    if(strpos($k, 'item_number') === 0) { 
     echo "$k = $v"; 
    } 
} 

PHP手冊:foreach()strpos()

2

嘗試:

foreach($_POST as $k => $v) 
{ 
    if(strpos($k, 'item_number') === 0) 
    { 
     echo "$k = $v"; 
    } 
} 

在上述例子中,將數組鍵和$ V將是的值。

+0

還有其他$ _POST變量,我只需要那些以「item_number」開頭的那個 – Natalia 2011-12-19 21:39:56

+0

@Natalia我已經更新了我的回答 – SeanNieuwoudt 2011-12-19 21:43:10

+0

我認爲@Natalia想要的是'item_number'在key的開頭,所以那裏應該是'strpos($ k,'item_number')=== 0' – piotrekkr 2011-12-19 21:55:11

4

如果你知道有多少你有:

for ($i=0; $i < $num_of_vars; $i++) 
    echo $_POST['item_number'.$i]."<br />"; 

UPDATE: 如果沒有:

foreach($_POST as $k => $v) { 
    $pos = strpos($k, "item_number"); 
    if($pos === 0) 
     echo $v."<br />"; 
} 

獲取所有的POST變量是像 「ITEM_NUMBER」

UPD 2:由於piotrekkr的評論,已將「==」更改爲「===」。由於

+1

你應該使用'if($ pos === 0)',因爲當針在字符串開頭時strpos()返回'0'如果沒有找到針,則顯示「false」。 – piotrekkr 2011-12-19 21:52:34

0
foreach($_POST as $k => $v) { 
    if(preg_match("#item_number([0-9]+)#si", $k, $keyMatch)) { 
     $number = $keyMatch[1]; 

     // ... 
    } 
} 
1

,如果你知道的變量的數目:

<?php 
$n = 25; // the max number of variables 
$name = 'item_number'; // the name of variables 
for ($i = 1; $i <= $n; $i++) { 
    if (isset($_POST[$name . $i])) { 
    echo $_POST[$name . $i]; 
    } 
} 

如果您不知道號碼:

<?php 
$name = 'item_number'; 
foreach ($_POST as $key) { 
    if (strpos($key, $name) > 0) { 
    echo $_POST[$key]; 
    } 
} 
1

如果必須與這些變量名棍子像item_numberX

foreach (array_intersect_key($_POST, preg_grep('#^item_number\d+$#D', array_keys($_POST))) as $k => $v) { 
    echo "$k $v \n"; 
} 

foreach (new RegexIterator(new ArrayIterator($_POST), '#^a\d+$#D', null, RegexIterator::USE_KEY) as $k => $v) { 
    echo "$k $v \n"; 
} 

更好的使用PHP的input variable array feature,如果你能控制輸入名字。

<input name="item_number[]"> 
<input name="item_number[]"> 
<input name="item_number[]"> 

然後php將它處理成一個數組給你。

print_r($_POST['item_number']); 
0

嘗試:

while (list($key,$value) = each($_POST)) 
    ${$key} = trim($value);