这是我的阵列:
$var = array('a', 'b');
现在我想为每个键定义一个范围。例如:
为每个数组值设置5个键:
echo $var[0]; // output: a
echo $var[1]; // output: a
echo $var[2]; // output: a
echo $var[3]; // output: a
echo $var[4]; // output: a
echo $var[5]; // output: b
echo $var[6]; // output: b
echo $var[7]; // output: b
echo $var[8]; // output: b
echo $var[9]; // output: b
事实上我想要这样的事情:
$var = array( '0'=>'a', '1'=>'a', '2'=>'a', '3'=>'a', '4'=>'a',
'5'=>'b', '6'=>'b', '7'=>'b', '8'=>'b', '9'=>'b' );
但实际上我无法为每个值定义一个键的范围,因为值太多了。应该注意的是,我可以通过if-else
语句(没有array
)来实现它,但在这种情况下,性能会急剧下降。像这样的东西:
if (0 <= $i <=4) { $var = 'a'; }
elseif (5 <= $i <=9) { $var = 'b'; }
但正如我所说,这些值过多,我无法手动为每个值定义范围。那么有什么解决方案吗? (动态设置每个值的5个键)
答案 0 :(得分:4)
$arr = array('a', 'b');
$i = 6; // for e.g.
$var = $arr[floor($i/5)];
// output: b
答案 1 :(得分:1)
这应该适合你:
只需循环遍历数组并array_fill()
结果数组中的每个值,例如。
<?php
$var = array('a', 'b');
$amount = 5;
$result = [];
foreach($var as $k => $v)
$result = $result + array_fill($k*$amount, $amount, $v);
print_r($result);
?>
输出:
Array
(
[0] => a
[1] => a
[2] => a
[3] => a
[4] => a
[5] => b
[6] => b
[7] => b
[8] => b
[9] => b
)
答案 2 :(得分:0)
$var = array( '0'=>'a', '1'=>'b');
$new_array = array();
foreach ($var as $key => $value) {
for($i = 0 ; $i < 5 ; $i++){
$new_array[] = $value;
}
}
echo '<pre>';
print_r($new_array);