use*_*659 4 php arrays string loops for-loop
我想在本周开始创建一个每小时的字符串0.该字符串长度为167个字符,对于该小时表示真/假的每个字符,由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
Run Code Online (Sandbox Code Playgroud)
所以我假设我可以设置一个空字符串并使用相同的方法来"构建"它.所以我正在运行一个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;
}
Run Code Online (Sandbox Code Playgroud)
$inputHours = '0011010101...'如果设置总长度为167个字符,则预期输出将取决于.
pot*_*hin 11
您可以使用.=运算符连接一个字符串中的字符,并使用[expression] ? [true] : [false]带有in_array()函数的三元运算符()检查条件:
for($x = 0; $x < 168; $x++)
$inputHours .= in_array($x, $hours) ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)