2017-10-05 93 views
2

我有一個PHP while循環,如下所示:輸出數組

$tmp = array(); 
//loop for category dropdown menu 
while($r = $stmt->fetch())   
{ 
$start_time = $r['consultation_start']; 
$end_time = $r['consultation_end']; 
$holiday = htmlspecialchars($r['consultation_holidays']); 
$tmp[] =sprintf(" $holiday ,");  
} 
//concatenate loop strings 
foreach($tmp as $output) 
{ 

$holidays = implode('', $tmp); 
$consultholidays = substr_replace($holidays ,"",-1); 
} 
echo $consultholidays; 
$stmt->closeCursor(); 
} 

我需要在格式輸出:

[Sunday], [Wednesday] 

我試着使用:

$tmp[] =sprintf(" [$holiday] ,"); 

但它給出的輸出爲:

[Sunday,Wednesday] 

我怎樣才能輸出格式爲:

[Sunday], [Wednesday] 

對不起,我是新來的PHP和learning..so請原諒的錯誤。

+0

'$ holiday'包含了什麼。發佈它的價值。 – mega6382

+0

@ mega6382 $節假日包含星期日,星期三 – Pamela

+0

這['星期天,星期三]'不定義它是字符串還是數組所以具體。 – User97798

回答

2

嘗試以下方法:

$holiday = "Sunday,Wednesday"; 
$holidays = explode(",",$holiday); 

$tmp[] = '['.implode('], [', $holidays).']'; 

var_dump($tmp); 

或者這樣:

function surround($item) 
{ 
    return "[" . ($item) . "],"; 
} 
$holiday = "Sunday,Wednesday"; 
$holidays = explode(",",$holiday); 
$str = implode(array_map('surround', $holidays)); 
$tmp[] = rtrim($str,','); 

var_dump($tmp); 

第一隻使用內爆到陣列粘合在一起,並通過], [將它們分離,並通過[整個字符串周圍和]

雖然第二個使用array_map圍繞單個項目,然後使用implode將它們變成字符串。

+0

@ mega6382 array(1){[0] => string(21)「[Sunday],[Wednesday]」}} – Pamela

+0

第一次或第二次使用哪種解決方案? – mega6382

+0

@Pamela好吧,再試一次。 – mega6382

2

,因爲我想,如果,如果$ TMP是數組,這[Sunday], [Wednesday]陣列太

所以你可以做這樣的

$tmp[] = [$holiday]; 

但如果這是像'[Sunday], [Wednesday]'

字符串,試試這個

$tmp[] = $holiday; 
echo '['.implode('], [', $tmp).']'; 

Demo

+0

??? 。它將輸出爲數組。 – Pamela

+0

我已更新回答瀏覽一下 –

+0

輸出是:[星期天,星期三] – Pamela