php - javascript 和 php 中字符串与数组的处理速度,以及数组是否可以在不进行操作的情况下传递给 php?

标签 php javascript arrays string

关于文本处理中字符串与数组的一些问题。

是否可以将 js array[] 作为数组传递给 php,而不将其转换为字符串或使用 JSON?只需将其作为普通数组传递,无需进行操作。

在 php 和 JS(或任何其他语言)中,一般来说,哪种格式处理或搜索文本(对于非常大的数组或文本字符串)更快。示例:

string = abc,def,dfa,afds,xyz,afds,xxx

array = {"abc","xyz","xxx"}

使用哪个更快地搜索 xyz 是否存在/匹配?

使用哪个更快地确定 xyz 的索引位置?

哪个内存大小/使用量较小?

TIA。

编辑:我猜第 1 点的答案是否定的,但对于第 2 点,请理解我这么问是因为我正在处理一个进行并发 ajax 调用的程序,该程序需要处理非常大的数组或文本字符串。接口(interface)的可用性取决于返回的ajax 调用的速度。由于这个问题,我不得不废弃原来的代码。

最佳答案

对于问题1,能否将原生Javascript数组传递给PHP,答案是否定的。
Javascript 数组和 PHP 数组不仅不兼容(它们是两种不同语言的数据结构),(客户端)Javascript 和 PHP 之间的唯一通信是通过 HTTP,它只知道字符串。不是数字,不是 bool 值,不是对象,不是数组,只有字符串。

对于问题2,速度,这取决于很多因素,包括你的搜索算法和字符串/数组长度。如果您的数据结构是数组,请将其用作数组,而不是字符串。可读性和可维护性第一,只有在必要时才进行速度优化。在遇到性能问题之前,您必须进一步突破极限,无论如何,您的简短示例都足够快。


这是我创建的一个测试用例,可以回答您的问题:http://jsperf.com/string-search-speed
不过,这确实取决于您的目标。在字符串中搜索意味着您需要排除仅匹配子字符串的可能性,为此您非常需要正则表达式。除非那是无关紧要的事情。另一方面,将所有内容填充到对象中的速度要快几个数量级,但不允许您存储相同的字符串两次。我不知道这是否值得关注。请务必在各种浏览器上运行这些测试,因为各个 Javascript 引擎之间的测试速度差异很大。

我越研究这个问题就越清楚,没有答案。所有测试在 Chrome 中的得分几乎相同(对于对象查找来说是安全的,它在不同的联盟中发挥作用)。 Opera 似乎有一个经过极大优化的 str.search 实现,与对象查找相当。在 Safari 中,所有正则表达式测试都非常慢,但对象查找是所有浏览器中最快的。 Firefox 的 str.indexOf 很棒,手动数组循环没那么多。

再说一次,没有绝对的答案(除非你使用对象,它总是更快)。 做最有意义的事情!

关于php - javascript 和 php 中字符串与数组的处理速度,以及数组是否可以在不进行操作的情况下传递给 php?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355411/

相关文章:

php - Laravel 队列有时会重复作业

php - 从表的数量输出发票

javascript - 是否可以对超出范围的 setInterval 变量调用 clearInterval 方法?

javascript - .map() undefined 不是 React.js 中的函数

javascript - 将数组从函数中推送到另一个函数中

javascript - 在 Javascript 中将数组传递给函数并转义双引号

php - 使用 PHP 表单将值放入 M​​ySQL 表中

php - 在 PHP 中使用数组类类型参数

javascript - Angular.js 在某些页面中向元素添加类

javascript - 将对象推送到数组时,如何不推送相同的对象?