javascript和php中字符串和数组的处理速度,以及数组是否可以不加操作地传递给php
string vs array processing speed in javascript and php, and can an array be passed to php without manipulation?
关于字符串和数组在文本处理中的几个问题。
是否有可能将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解析回数组对象。
也,听起来你在做过早的优化。大多数情况下,使代码易于使用比从执行时间中节省几毫秒更重要。如果你真的想知道事物的速度,运行一些基准测试。
- 将数组从PHP传递到Javascript
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 如何使用Javascript将空数组发送到PHP服务器
- 调用php数组中的JS函数
- PHP中的数组输出
- 将带有多维数组的表单从Javascript提交到PHP
- 将数组从javascript格式化为php的更好方法,反之亦然
- 将PHP变量分配给PHP数组
- php数组转换为javascript
- 如何用javascript打印php数组
- 将PHP数组传递给js变量
- 如何在php中读取没有任何键的JSON数组
- 从javascript访问属性多端数组PHP
- 替换辅助数组 PHP 中的值
- JavaScript发送变量,但插入数组PHP不能正常工作
- 在数组php中中断数组
- 如何通过javascript数组php laravel4
- 多维json编码关联数组php到JS
- (删除重复)重新索引多维数组PHP jquery
- 我可以't在jQuery中获取数组PHP编码