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

javascript和php中字符串与数组的处理速度,以及数组是否可以在不进行操作的情况下传递给php?,php,javascript,arrays,string,Php,Javascript,Arrays,String,关于文本处理的字符串与数组的几个问题 是否可以将js数组[]作为数组传递给php,而无需将其转换为字符串或使用JSON?只需将其作为普通数组传递,无需操作 在php和JS(或任何其他语言)中,一般来说,哪种格式处理或搜索文本(对于非常大的数组或文本字符串)更快。例如: string = abc,def,dfa,afds,xyz,afds,xxx array = {"abc","xyz","xxx"} 使用哪一种搜索查看xyz是否存在/匹配更快 使用哪种方法确定xyz的索引位置更快 哪个内存大

关于文本处理的字符串与数组的几个问题

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

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

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

array = {"abc","xyz","xxx"}
使用哪一种搜索查看xyz是否存在/匹配更快

使用哪种方法确定xyz的索引位置更快

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

蒂亚


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

至于问题1,你能把一个本地Javascript数组传递给PHP吗,答案是否定的。
不仅Javascript数组和PHP数组不兼容(它们是两种不同语言的数据结构),而且(客户端)Javascript和PHP之间的唯一通信是通过HTTP,HTTP只知道字符串。不是数字,不是布尔值,不是对象,不是数组,只有字符串

至于问题2“速度”,它取决于很多因素,包括搜索算法和字符串/数组长度。如果数据结构是数组,请将其用作数组,而不是字符串。可读性和可维护性第一,仅在必要时加速优化。在遇到性能问题之前,您必须更进一步地突破限制,无论哪种方式,您的简短示例都足够快


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

我玩得越多,就越清楚没有答案。所有测试在Chrome上的得分几乎相同(对于对象查找是安全的,它在不同的联赛中进行)。Opera似乎有一个极大优化的<>代码> St.Stask< /Cord>实现,它与对象查找一致。在Safari中,所有正则表达式测试都非常慢,但对象查找是所有浏览器中最快的。Firefox的
str.indexOf
非常棒,手动数组循环并不多

因此,同样没有绝对的答案(除非您使用的对象总是更快)做最有意义的事

为什么说“不使用JSON”?JSON正是您想要的。将数组转换为JSON字符串,将其传递给PHP,然后让PHP将JSON解析回数组对象


此外,听起来您正在进行过早的优化。大多数情况下,使代码易于使用比减少毫秒的执行时间更重要。如果你真的想知道事情的发展速度,那就运行一些基准测试。

对于问题1:谢谢,但我的问题是,从JS到PHP传递数组而不进行操作在技术上是否可行,我知道JSON。我现在处于优化阶段,因为我已经完成了我希望程序如何运行,不幸的是,我的程序需要20多个并发ajax调用到php,每个调用可能需要发送一个1000多个元素的大数组或一长串文本(每个调用)。阵列是动态的,并且会增长,这只会导致程序随着用户的继续而逐渐变慢。@Jamex您的基本设计可能会有所改进。为什么发送的信息会增长?您是否附加到已发送到服务器的信息,从而每次都重新发送重复的信息?为什么您需要同时向PHP发送20个ajax调用,您不能将这些都放在一个ajax调用中吗?你所描述的听起来似乎从来没有必要。您的用户是否正在创建需要发送到服务器的2000条新信息?如果没有,您确定所有这些都需要发送吗?我想还有另一种方法可以实现你的目标。谢谢你对问题1的解释。对于问题2,假设我有一个10000长的数组和一个文本字符串,其中包含由逗号分隔的相同元素。使用哪个更快来查看元素之一是否为“xyz”?@Jamex-在“速度有多快…”问题中有许多变量,例如数组的indexOf或每个方法是否可用,一般字符串或数组处理速度,等等。不同浏览器之间的速度往往不同(有时差异很大),因此在一个浏览器中速度更快的东西在另一个浏览器中可能不存在。对于大型数组,索引确实很有帮助,排序也是如此。正如其他人所说,只需做看起来合理、易于维护且不浪费开发时间的事情。然后,如果您有性能问题,请花费精力查找并解决特定问题。@Jamex同样,您要做的事情比一个特定操作的速度要重要得多。可能有一种完全不同的方式来完成任何你想完成的事情,这使得这个问题完全过时。谢谢大家,当然有很多方法来编码。但是出于学术目的,在大型数组中匹配/搜索(或者正确的方法是“xyz”或php中的字符串)会更快吗?我不是在要求