使用循环一次创建一个字符的字符串

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)