我正在尝试从0
开始创建一周中每小时的字符串。该字符串长度为 167 个字符,对于该小时代表 true / false 的每个字符,由 0/1 组成。
我知道你可以这样编辑字符串:
$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 字符的总长度。
答案 0 :(得分:11)
您可以使用.=
运算符将一个字符串中的字符连接起来,并使用带有[expression] ? [true] : [false]
函数的三元运算符(in_array()
)检查条件:
for($x = 0; $x < 168; $x++)
$inputHours .= in_array($x, $hours) ? 1 : 0;