我在PHP中有一个数组,我在其中存储天值
$days = array (
1 => 'Mon',
2 => 'Tue',
3 => 'Wed',
4 => 'Thu',
5 => 'Fri',
6 => 'Sat',
7 => 'Sun'
);
我有一个逗号分隔的值,表示变量$days的键。如果这个系列是
1,2,3,4,5,6,7则应显示为“Mon-Sun”。
1,2,3,4,5那么它应该显示为“Mon-Fri”。
1,2,4,5,6然后它应该显示“星期一-星期二,星期四-星期六”
1,3,5,7然后它应该显示"星期一,星期三,星期五,太阳"
下面的代码将只为系列1,2,3,4,5生成“Mon-Tue-Wed-Thu-Fri”
$keys = "1,2,3,4,5,6";
$days = array('1' => 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
$key_array = explode(',', $keys);
$day_series = $first_day = $days[reset($key_array)];
$first_value = reset($key_array);
foreach ($key_array as $key => $value) {
if ($first_value != $value) {
if ($value == $i) {
$day_series = $day_series . ' - ' . $days[$value];
} else
$day_series = $day_series . ', ' . $days[$value];
}
$i++;
}
echo $day_series;
它很笨重,但很管用。
$DAY_NUMBER = array( 'Mon' => 0, 'Tue' => 1, 'Wed' => 2, 'Thu' => 3, 'Fri' => 4, 'Sat' => 5, 'Sun' => 6 );
$NUMBER_DAY = array( 0 => 'Mon', 1 => 'Tue', 2 => 'Wed', 3 => 'Thu', 4 => 'Fri', 5 => 'Sat', 6 => 'Sun' );
function day_series ( $day_list ) {
global $DAY_NUMBER, $NUMBER_DAY;
// CONVERT DAY NAMES TO NUMBERS
$num_list = array();
for( $n = 0; $n < count($day_list); $n++ ) {
$num_list[] = $DAY_NUMBER[$day_list[$n]];
}
// ALLOW FOR WRAP AROUND
$first = $num_list[0];
for( $n = 0; $n < count($num_list); $n++ ) {
if( $num_list[$n] < $first ) {
$num_list[$n] += 7;
}
}
$day_series = array();
while( !empty($num_list) ) {
$first = $last = array_shift($num_list);
while( !empty($num_list) && ( $last+1 == $num_list[0] ) ) {
$last = array_shift($num_list);
}
if( $first == $last ) {
$day_series[] = $NUMBER_DAY[ $first % 7 ];
} else if( $first+1 == $last ) {
$day_series[] = $NUMBER_DAY[ $first % 7 ] . ',' . $NUMBER_DAY[ $last % 7 ];
} else {
$day_series[] = $NUMBER_DAY[ $first % 7 ] . '-' . $NUMBER_DAY[ $last % 7 ];
}
}
// RETURN AS JOINED STRING
return join(',', $day_series );
}
从Foreach
循环中删除其他
,如下所示
foreach ($key_array as $key => $value) {
if ($first_value != $value) {
if ($value == $i) {
$day_series = $day_series . ' - ' . $days[$value];
}
$i++;
}
}
$day_series = $day_series . ', ' . $days[$value];
echo $day_series;
这应该可以给你Mon-Fri
for1,2,3,4,5
问题内容: 我的数据库中有列,其中的值如下所示: 在虚拟列中没有任何编号。逗号分隔的值可以出现。我尝试了以下查询,但它正在创建重复的结果。 我不明白这个问题。谁能帮忙? 问题答案: 非常适合我- 还有许多其他方法可以实现它。阅读将单个逗号分隔的字符串拆分成行。 *关于使用列而不是单个字符串值时的重复项的 *更新 。只见PRIOR子句中使用DBMS_RANDOM的摆脱循环回路的在这里 尝试以下方法
问题内容: 我有一个其中有很多记录的记录,我想知道其中有多少个名字,以及其中一个名字多少时间。 表名 我想找到多少个名字及其数量。 预期的输出应该是这样的 帮助我解决它。 问题答案: 结果:
问题内容: 我正在从存储过程中调用Scalar UDF以获取列值。在标量UDF内,我有一个xml,并且必须获取特定节点的逗号分隔值。我使用了Cross apply,但是它导致了巨大的性能瓶颈,因为存储过程实际上是用来获取报告的。 有一个[旅行者]表,其中包含字段ID,BookingID(可以重复)和FareDetails。在FareDetails内部,我们存储xml。 UDF内部的逻辑如下:第一解
问题内容: 我在MySQL中有一个函数,该函数返回由逗号分隔的整数值列表,从而形成一个字符串。 例如 退货 这是后端(Java)所需的简单功能-但是现在,由于建议了新功能,我需要这些结果用于另一个查询,该查询可能正在使用 IN 关键字遍历这些查询,如下所示: 作为单个csv元素,MyFunction(23)的结果不可迭代。如果我可以使用某些函数,例如可以生成结果的函数,则以下内容将非常适合我的查询
我如何修改我的regex来为那些以“”或“,”开头,以“”或“,”结尾的字符串返回false
我在文本文件中有以下内容要导入ArrayList: 澳大利亚,2 加纳,4 中国,3 西班牙,1 我的ArrayList由来自另一个类Team的对象组成,该类具有TeamName和排名字段。我可以获取以下内容以将String和int导入团队名称,但我无法分离应该是团队排名的数字: 我猜我必须在该行的某个地方使用拆分,或者将字符串转换为整数??