2015-11-28 3 views
-1

У меня есть массив в PHPПроверьте, существует ли значение между двумя индексами массива в PHP

$array = array(2, 3, 1, 2, 3, 2, 3, 3, 2, 1); 

и я хочу, чтобы проверить, существует ли значение между индексом 3 до 7, как индекс включительно.

У меня есть обходное решение. Я могу скопировать массив из индекса 3 в 7 в другой массив, а затем проверить с помощью in_array(), но интересно, существует ли какой-либо прямой подход.

+2

Использование in_array() с array_slice() .... 'если in_array ($ игла, array_slice (3, 7-3 + 1));' –

+1

Я не думаю, что существует более прямой подход, за исключением циклов с использованием цикла, такого как 'for (i = 3; i <= 7; i ++)' и проверки значения в этом индексе. Теперь 'in_array', вероятно, более оптимизирован, но все же накладные расходы на копирование части, вероятно, отклонят преимущество в цикле for. По крайней мере, цикл более эффективен с точки зрения памяти. – GolezTrol

+0

@Mark Baker Вы можете добавить свой комментарий в ответе? – Scorpion

ответ

1

Использование in_array() с array_slice() ....

$startPos = 3; 
$endPos = 7; 
if in_array($needle, array_slice($array, $startPos, $endPos - $startPos + 1)) {...} 
2

Вы можете просто пройти от 3 до индексов 7 с for цикла:

$array = array(2, 3, 1, 2, 3, 2, 3, 3, 2, 1); // your array 
$min = 3;          // lowest index (inclusive) 
$max = 7;          // highest index (inclusive) 
$search = 3;         // value to look for 
$found = false;        // will be set to true if found 
for($i = $min; i < $max; $i++) { 
    if($array[$i] == $search) { 
     $found = true; 
    } 
} 

Как @MarkBaker сказал в своем комментарии на ваш вопрос, есть более короткие пути, чтобы сделать это, но это самый простой и прямой (ИМО) метод.

+0

Это хороший простой способ, но комментарий Марка Бейкера - это то, что я искал. – Scorpion

Смежные вопросы