这是我的阵列:
Array
(
[F] => 09:00 - 18:00
[M] => 09:00 - 18:00
[Th] => 09:00 - 18:00
[W] => 09:00 - 18:00
[T] => 09:00 - 18:00
[Su] => RD
[Sa] => RD
)
我希望产生这个输出:
MTWThF 9:00 - 18:00 SaSu RD
这是我的代码:
array_s=array(
F => 09:00 - 18:00
M => 09:00 - 18:00
Th => 09:00 - 18:00
W => 09:00 - 18:00
T => 09:00 - 18:00
Su => RD
Sa => RD
)
asort($array_s);
$temp_s = '';
foreach($array_s as $key => $value){
if($temp_s == null){
$temp_s = $value; //first array
$temp_day = $key;
$res_day .= $temp_day;
}else{
if($value == $temp_s){
$res_day .= $key;
}else{
echo $res_day ." ". $temp_s;
$res_day = null;
$temp_s = $value;
$temp_day = $key;
$res_day .= $temp_day;
}
}
但输出是这样的:
FMThWT 09:00 - 18:00 可能是我做错了但我不知道如何修复错误。感谢
答案 0 :(得分:1)
有很多方法可以做这样的事情。这是一个例子:
foreach(array_values($array_s) as $value) {
foreach($array_s as $key => $current) {
if($value != $current)
continue;
if(!array_key_exists($value, $output))
$output[$value] = array();
if(!in_array($key, $output[$value]))
$output[$value][] = $key;
}
}
This gives you a structured array like this:
Array
(
[09:00 - 18:00] => Array
(
[0] => F
[1] => M
[2] => Th
[3] => W
[4] => T
)
[RD] => Array
(
[0] => Su
[1] => Sa
)
)
然后,您可以这样输出:
foreach($output as $key => $current) {
echo implode('', $current) . ' ' . $key . ' ';
}
输出数据的奇怪方式,但这会给你:
FMThWT 09:00 - 18:00 SuSa RD
...它不是你想要的顺序,但实现该顺序的最佳方法是将其修复到创建数组的位置(因为它显然是与日期相关的事情) - 更难你创造它的那种排序就像它在开始时对它进行排序一样。如果您决定在此处进行排序,have a look at this post and use his example.
输出演示: https://eval.in/78517
文档
答案 1 :(得分:0)
foreach 完成后,您需要回显剩下的内容:
array_s=array(
F => 09:00 - 18:00
M => 09:00 - 18:00
Th => 09:00 - 18:00
W => 09:00 - 18:00
T => 09:00 - 18:00
Su => RD
Sa => RD
)
asort($array_s);
$temp_s = '';
foreach($array_s as $key => $value){
if($temp_s == null){
$temp_s = $value; //first array
$temp_day = $key;
$res_day .= $temp_day;
}else{
if($value == $temp_s){
$res_day .= $key;
}else{
echo $res_day ." ". $temp_s;
$res_day = null;
$temp_s = $value;
$temp_day = $key;
$res_day .= $temp_day;
}
}
}
echo $res_day ." ". $temp_s;