【发布时间】:2014-07-06 19:27:32
【问题描述】:
我正在尝试从0 开始创建一周中每个小时的字符串。该字符串的长度为 167 个字符,由 0/1 组成,每个字符表示该小时的 true/false。
我知道你可以这样编辑字符串:
$foo = "123456789";
echo $foo[0]; // outs 1
echo $foo[1]; //outs 2
$foo[0] = 1;
$foo[1] = 1;
echo $foo[0]; // outs 1
echo $foo[1]; // outs 1
所以我假设我可以设置一个空白字符串并使用相同的方法来“构建”它。所以我从 0-167 运行一个循环,同时检查“小时”是否在 $hours 数组中。如果是,我在我的字符串中将其设置为 1...如果不是,则将其设置为 0。问题:
1. 设置$inputHours = '' 不起作用,它只会创建
一个数组而不是我想要的字符串。
2. 是否有更优化的方式来检查是否设置了其他小时
比使用in_array 167 次?
//array of selected hours
$hours = array(1, 25, 34, 76, 43)
//create selected hours string from selection
$inputHours = '';
for ($x = 0; $x < 168; $x++) {
$inputHours[$x] = in_array($x, $hours) ? 1 : 0;
}
预期输出将是 $inputHours = '0011010101...',具体取决于是否设置为 167 个字符的总长度。
【问题讨论】:
-
很好奇,字符串将用于什么,保持选择小时数组似乎更有效
-
我一直在想一个好方法,将整周的选定时间存储在 sql 中的行中。我最初有 7 行,每行 24... 每天一个,但是查询花费的时间比我想要的要长,因为如果我想为每个“结果”显示整周的时间表,我必须为每个“结果”加入这些行。我今天想到了这个方法。轻松插入,轻松查询,每行一行而不是 7 行,读取值就像 $week[hour#]
-
坏主意,创建小时表
-
解释你的想法和推理——这比在数据库中有 168 列或 7 行 24 列要快得多,也更容易。我也不需要只查询整个集合的特定时间。
标签: php arrays string loops for-loop