2017-10-05 57 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