2015-09-29 4 views
0

Скажите, что у меня есть один размерный массив из 500 000 ячеек, и я хочу знать, является ли этот массив числовым, наиболее очевидными параметрами являются либо итерация по всему массиву, и использование is_numeric() функции или использовать array_shift. Проблема в том, что обе эти опции - O (n) (исправьте меня, если я ошибаюсь) и будут более дорогими по мере роста данных в массиве. Я думаю о другом, но я не уверен в его O, который заключается в поиске всех не числовых значений в массиве с использованием regex и array_search. Как вы думаете, и есть ли менее дорогие варианты?Лучший способ проверить, является ли массив числовым

+2

Сложность - это O (n) на самом деле. И вы не сможете снизить его, если не будете контролировать способ заполнения этого массива (чтобы вы могли проверять элементы, когда они должны быть добавлены). – raina77ow

+0

Знаете ли вы, что массив будет иметь нечисловые значения? – Tim

+0

@ Тит нет, я этого не делаю. –

ответ

0

Будет ли беспорядок эффективным? Если у вас простой массив, я бы объединил все элементы вместе в строку и выполнил ее против is_numeric. По крайней мере, вам нужно будет только один раз выполнить цифровую проверку.

$foo = array(1, 2, 3, 4, 5, 6, ....); 
$bar = implode('', $foo); 

var_dump(is_numeric($bar)); 
+0

Я думаю, что is_numeric позволяет такие вещи, как hex и десятичные знаки и экспоненциальные обозначения. Таким образом, OP может иметь исходную точку данных, которая является шестнадцатеричной, но когда она вставляется в другие вещи, кажется, больше не является числовой. –

+0

@MeganSquire, что имеет смысл. Полагаю, это зависит от данных, с которыми работает OP. – georaldc

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