Ответ 1
Как насчет array_combine?
$b = array_combine(range(1,10), range(1,10));
Я использую функцию range()
для создания массива. Тем не менее, я хочу, чтобы keys
был таким же, как value
. Это нормально, когда я делаю range(0, 10)
, когда индекс начинается с 0
, но если я делаю range(1, 11)
, индекс все равно начнет с 0
, поэтому он заканчивается 0=>1
, когда я хочу, чтобы он был 1=>1
Как я могу использовать range()
для создания массива, где key
совпадает с value
?
Как насчет array_combine?
$b = array_combine(range(1,10), range(1,10));
Или вы сделали это следующим образом:
$b = array_slice(range(0,10), 1, NULL, TRUE);
Найти вывод здесь: http://codepad.org/gx9QH7ES
Для этого нет готового решения. Вам нужно будет создать массив самостоятельно, например:
$temp = array();
foreach(range(1, 11) as $n) {
$temp[$n] = $n;
}
Но, что еще более важно, зачем вам это нужно? Вы можете просто использовать это значение?
<?php
function createArray($start, $end){
$arr = array();
foreach(range($start, $end) as $number){
$arr[$number] = $number;
}
return $arr;
}
print_r(createArray(1, 10));
?>
Смотрите здесь: http://codepad.org/Z4lFSyMy
<?php
$array = array();
foreach (range(1,11) as $r)
$array[$r] = $r;
print_r($array);
?>
Создайте функцию для этого:
if (! function_exists('sequence_equal'))
{
function sequence_equal($low, $hight, $step = 1)
{
return array_combine($range = range($low, $hight, $step), $range);
}
}
Использование:
print_r(sequence_equal(1, 10, 2));
Вывод:
array (
1 => 1,
3 => 3,
5 => 5,
7 => 7,
9 => 9,
)
В PHP 5.5 >= вы можете использовать Generator для этого:
function sequence_equal($low, $hight, $step = 1)
{
for ($i = $low; $i < $hight; $i += $step) {
yield $i => $i;
}
}