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

时间:2014-05-18 22:31:45

标签: php arrays string loops for-loop

我正在尝试从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 字符的总长度。

1 个答案:

答案 0 :(得分:11)

您可以使用.=运算符将一个字符串中的字符连接起来,并使用带有[expression] ? [true] : [false]函数的三元运算符(in_array())检查条件:

for($x = 0; $x < 168; $x++)
    $inputHours .= in_array($x, $hours) ? 1 : 0;

Example