2014-02-19 226 views
0

我有一個textarea在至極的用戶這樣寫:Foreach循環不工作

  • 3X藍花
  • 2 *紅花
  • 5紫色花
  • 黃花

重點是回聲藍花3次等,而沒有數字的花朵迴響1次。

這是我的代碼:

$str = $_POST['tekst']; 
$input = explode("\n", $str); 
foreach($input as $line) 
{ 
    preg_match("/\d+/", $line, $matches); 
    $line = preg_replace("/\d+/",'' ,$line); 
    $number = (isset($matches[0]))?$matches[0]:1; 
    if(strlen($line)>0){ 
     foreach ($line as $k=>$val) 
     { 
      $temp_second_field = $number[$k]; 
      for ($i = 0 ; $i < $temp_second_field ; $i++) 
      { 
       echo $val; 
      } 
     } 
    } 
} 
+0

從'爆炸( 「\ n」,$ STR)得到了'的var_dump()','並檢查您是否已經預測結果或不 –

+0

應該是'回聲htmlspecialchars($ val);' – greg0ire

+0

'array(size = 2) 0 => string'3 Blue Flowers '(length = 14) 1 => string'5 Purple Flowers'(length = 16)' 我得到了錯誤,在第二個foreach中存在無效參數 – dinca

回答

1

這是因爲$線是不是一個數組,它是一個字符串。嘗試更換此:

// foreach ($line as $k=>$val) 
// { 
    // $temp_second_field = $number[$k]; 
    // for ($i = 0 ; $i < $temp_second_field ; $i++) 
    // { 
     // echo $val; 
    // } 
// } 
//$temp_second_field = $number[$k]; 

與此:

for ($i = 0 ; $i < $number ; $i++) 
{ 
    echo $line; 
} 
+0

非常感謝! 這正是我所需要的 – dinca

1

我認爲,第二的foreach:

foreach ($line as $k=>$val) 

是一個錯誤 - 你試圖通過符號遍歷字符串?

看看這個代碼:

$str = $_POST['tekst']; 
$input = explode("\n", $str); 
foreach($input as $line) 
{ 
    preg_match("/\d+/", $line, $matches); 
    $line = preg_replace("/\d+/",'' ,$line); 
    $number = (isset($matches[0]))?$matches[0]:1; 
    if(strlen($line)>0){ 
     echo str_repeat($line."\n", $number); 
    } 
}