javascript和php中字符串和数组的处理速度,以及数组是否可以不加操作地传递给php

string vs array processing speed in javascript and php, and can an array be passed to php without manipulation?

本文关键字:数组 php 操作 是否 字符串 处理速度 javascript      更新时间:2023-09-26

关于字符串和数组在文本处理中的几个问题。

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

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

string = abc,def,dfa,afds,xyz,afds,xxx
array = {"abc","xyz","xxx"}

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

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

哪个具有更小的内存大小/使用率?

TIA。

编辑:点1的答案是没有我猜,但点2,请理解,我问,因为我正在处理一个程序,使并发ajax调用,需要处理非常大的数组或文本字符串。界面的可用性取决于返回ajax调用的速度。由于这个问题,我不得不放弃原来的代码。

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

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


下面是我创建的一个测试用例,它可能会回答你的问题:http://jsperf.com/string-search-speed
它真的取决于你的目标。在字符串中搜索意味着您需要排除只匹配子字符串的可能性,为此您非常需要一个RegEx。除非这无关紧要。另一方面,把所有的东西都塞进一个对象会快上几个数量级,但不允许您存储相同的字符串两次。我不知道这是否值得关注。一定要在各种浏览器上运行这些测试,因为不同的Javascript引擎的测试速度差别很大。

我越想越清楚这是没有答案的。在Chrome中,所有测试的得分几乎一样好(对于对象查找是安全的,这在另一个联盟中发挥作用)。Opera似乎有一个极大优化的str.search实现,它与对象查找相当。在Safari中,所有的Regex测试都非常慢,但是对象查找是所有浏览器中最快的。Firefox的str.indexOf很棒,手动数组循环就没那么好了。

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

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

也,听起来你在做过早的优化。大多数情况下,使代码易于使用比从执行时间中节省几毫秒更重要。如果你真的想知道事物的速度,运行一些基准测试。