Что касается вопроса 1, можете ли вы передать собственный массив Javascript в PHP, ответ - нет.
Мало того, что Javascript-массивы и PHP-массивы несовместимы (это структуры данных двух разных языков), единственное сообщениемежду (на стороне клиента) Javascript и PHP через HTTP, который знает только строки.Не числа, не логические значения, не объекты, не массивы, а только строки.
Что касается вопроса 2, скорость зависит от многих факторов, включая алгоритм поиска и длину строки / массива.Если ваша структура данных является массивом, используйте его как массив, а не как строку.Читаемость и ремонтопригодность в первую очередь, оптимизация скорости только при необходимости.И вам придется еще немного расширить границы, прежде чем вы столкнетесь с проблемами производительности, ваши короткие примеры достаточно быстры в любом случае.
Вот созданный мной тестовый пример, который может ответить на ваш вопрос: http://jsperf.com/string-search-speed
Это действительно зависит от вашей цели.Поиск в строке означает, что вам нужно исключить возможность совпадения подстроки, для которой вам в значительной степени нужен RegEx.Если это не беспокоит.С другой стороны, встраивание всего в объект происходит на несколько порядков быстрее, но не позволит вам хранить одну и ту же строку дважды.Будь то беспокойство или нет, я не знаю.Обязательно запускайте эти тесты в самых разных браузерах, поскольку скорость отдельных тестов в разных движках Javascript сильно различается.
И чем больше я играю с этим, тем яснее становится отсутствие ответа.Все тесты почти одинаково хорошо зарекомендовали себя в Chrome (безопасно для поиска объектов, который играет в другой лиге).Opera, похоже, имеет чрезвычайно оптимизированную реализацию str.search
, которая находится на одном уровне с поиском объектов.В Safari все тесты Regex ужасно медленные, но поиск объектов - самый быстрый в любом браузере.str.indexOf
в Firefox - это круто, ручное зацикливание массива не так уж и много.
Итак, опять нет абсолютного ответа (если вы не используете объекты, которые всегда быстрее). Делай то, что имеет смысл!