Цитата (sergeiss @ 25.11.2014 - 14:10) |
М-да... Зачем столько телодвижений? |
$list = array(718, 720, 721, 725, 726);
$last = 0;
$array_slice = array_slice($list, $last, 3);
$last += 3;
if($last > count($list)) {
$last -= count($list);
$array_slice = array_merge($array_slice, array_slice($list, 0, $last));
}
Цитата (mailmoney @ 25.11.2014 - 15:30) |
я описал выше вариант, он выглядет так просто... |
Цитата (Hello @ 25.11.2014 - 15:28) |
Цитата другой вариант, если остановились на 725, то должно получиться 726, 718, 719 Эта часть не работает |
Цитата (S.Chushkin @ 25.11.2014 - 15:31) |
А действительно, - зачем столько "телодвижений"? |
Цитата |
Твой код не решает задачу. |
<?php
$numbers = Array(
0 => 718,
1 => 719,
2 => 720,
3 => 721,
4 => 725,
5 => 726
);
$number = 718;
function getAfterNumber(array $numbers, $findNumber, $count = 3)
{
$values = array_values($numbers);
$revertValues = array_flip($values);
if (!isset($revertValues[$findNumber])) {
return array();
}
$pos = $revertValues[$findNumber];
return array_slice($values, $pos, $pos + $count);
}
var_dump(getAfterNumber($numbers, $number));
$number = 725;
Цитата |
Notice: Undefined index: 6 in /in/JkcmM on line 26 array(3) { [0]=> int(725) [1]=> int(726) [2]=> NULL } |
Цитата (brevis @ 25.11.2014 - 18:15) |
Удивительно, но во всех вариантах есть какой-то баг. |
Цитата (S.Chushkin @ 25.11.2014 - 18:56) | ||
Где/какие баги в моём варианте? |
Цитата (S.Chushkin @ 25.11.2014 - 14:56) |
Где/какие баги в моём варианте? |
Цитата (brevis @ 25.11.2014 - 18:58) |
Он не работает. По условию задачи нам изначально не известен индекс элемента. Его сначала нужно найти. |
Цитата (kaww @ 25.11.2014 - 19:01) | ||
Ну а с моим. С моим что не так? |
Цитата (S.Chushkin @ 25.11.2014 - 19:04) |
Вы о чём? Где Вы видите индексы в алгоритме? (да и в описании задачи то же - где?) |
$list = array(718, 720, 721, 725, 726);
$last = 0; <-------------------- вот здесь и вижу
$array_slice = array_slice($list, $last, 3);
$last += 3;
if($last > count($list)) {
$last -= count($list);
$array_slice = array_merge($array_slice, array_slice($list, 0, $last));
}