小编tot*_*rds的帖子

在PHP中FOR FOR FOR FORACH的性能

首先,我理解90%的应用程序中性能差异完全不相关,但我只需要知道哪个是更快的构造.那......

目前在网上提供的信息令人困惑.很多人说foreach很糟糕,但从技术上来说它应该更快,因为它假设使用迭代器简化了数组遍历的编写.迭代器,再次假设更快,但在PHP中也显然死得很慢(或者这不是PHP的东西?).我在谈论数组函数:next()prev()reset()等等,如果它们是偶数函数而不是那些看起来像函数的PHP语言特性之一.

为了缩小这个范围:我在以超过1的步长遍历数组时没有兴趣(也没有负步骤,即反向迭代).我也对从任意点到任意点的遍历不感兴趣,只有0到长度.我也没有看到定期操作超过1000个键的数组,但我确实看到一个数组在应用程序的逻辑中被遍历了多次!另外,对于操作,主要是字符串操作和回声.

以下是一些参考站点:
http://www.phpbench.com/
http://www.php.lt/benchmark/phpbench.php

我到处听到的内容:

  • foreach很慢,因此for/ while更快
  • PHP foreach复制它迭代的数组; 为了使它更快你需要使用引用
  • 像这样的代码:比a更快$key = array_keys($aHash); $size = sizeOf($key);
    for ($i=0; $i < $size; $i++)
    foreach

这是我的问题.我写了这个测试脚本:http://pastebin.com/1ZgK07US,无论我运行脚本多少次,我得到这样的东西:

foreach 1.1438131332397
foreach (using reference) 1.2919359207153
for 1.4262869358063
foreach (hash table) 1.5696921348572
for (hash table) 2.4778981208801
Run Code Online (Sandbox Code Playgroud)

简而言之:

  • foreachforeach参考更快
  • foreach 比...更快 for
  • foreachfor比哈希表更快

谁能解释一下?

  1. 难道我做错了什么?
  2. PHP foreach引用的东西真的有所作为吗?我的意思是,如果你通过引用传递它为什么不复制它?
  3. foreach语句的等效迭代器代码是什么; 我在网上看到了一些,但每次我测试它们的时机都是关闭的; 我还测试了一些简单的迭代器结构,但似乎从来没有得到过不错的结果 - PHP中的数组迭代器是不是很糟糕?
  4. 是否有更快的方法/方法/构造来迭代除FOR/FOREACH(和WHILE)之外的数组?

PHP版本5.3.0


编辑:答案 在这里的人的帮助下,我能够拼凑出所有问题的答案.我在这里总结一下:

  1. "难道我做错了什么?" …

php arrays performance foreach for-loop

127
推荐指数
3
解决办法
10万
查看次数

从iOS/Android上的web-app调用本机日期选择器

我正在尝试使用HTML5在不同平台上运行本机Web应用程序来探索可行性.目前,一个<input type="date">领域只是在Android和iOS上打开标准软键盘.我想在未来移动操作系统的软键盘将包括日期选择器等 - 就像<select>今天调用本机选择一样.

由于这不是在Android或iOS上实现,而是在本机UI中实现,因此Web应用程序是否可以调用本机日期选择器,即单击时?

这将使我们可以停止使用jQuery mobile和YUI等JavaScript库.

如果我的问题不清楚,请告诉我.先感谢您 :-)

javascript iphone html5 android ios

77
推荐指数
4
解决办法
12万
查看次数

允许使用selected.js多选的新值

我正在使用selected.js插件http://harvesthq.github.com/chosen/和jQuery来允许用户从select中选择多个选项.但是,我现在希望能够让他们创造尚未存在的价值 - 任何想法如何解决这个问题?

编辑:与SO自己的标签选择/创建栏类似的东西将接近我所追求的

最好不要更改或编辑插件,但如果需要,也可以.

代码:HTML:

<p>Select something</p>
<select name="theSelect[]" multiple="multiple">
    <option value="First Option">First Option</option>
    <option value="Second Option">Second Option</option>
</select>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

$(function(){
    $('select').chosen();
});
Run Code Online (Sandbox Code Playgroud)

因此,如果用户输入"第三选项",我想将其添加到列表中并将其选中.值和显示名称是/将是相同的,所以这不是一个问题

jquery multiple-select jquery-chosen

48
推荐指数
5
解决办法
5万
查看次数

PHP目录中特定文件的列表

以下代码将列出目录中的所有文件

<?php
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle)))
    {
        if (($file != ".") 
         && ($file != ".."))
        {
            $thelist .= '<LI><a href="'.$file.'">'.$file.'</a>';
        }
    }

    closedir($handle);
}
?>

<P>List of files:</p>
<UL>
<P><?=$thelist?></p>
</UL>
Run Code Online (Sandbox Code Playgroud)

虽然这是非常简单的代码,但它完成了这项工作.

我现在正在寻找一种方法来列出最后只有.xml(或.XML)的文件,我该怎么做?

php directory file list

46
推荐指数
4
解决办法
13万
查看次数

jQuery检测点击禁用提交按钮

小提琴:http://jsfiddle.net/ugzux/

正如您所看到的,我有一个带有禁用(通过javascript)提交按钮的表单.

我希望能够将click事件绑定到它,所以我可以在我允许提交表单(即再次启用该按钮)之前对输入需要修复的内容进行一些爵士指示.

但是,禁用提交按钮也显然会禁用绑定到按钮的任何点击事件,即使它们在禁用后被绑定 - 任何想法如何解决这个问题?

实际上,一种解决方案是停止禁用按钮,而是有一个事件

$('form').submit(function(event){
    event.preventDefault(); 
});
Run Code Online (Sandbox Code Playgroud)

但是我想知道禁用输入和javascript事件的来龙去脉,如果有解决方法,因为我之前从未遇到过这种行为.

forms jquery submit

41
推荐指数
3
解决办法
8万
查看次数

jQuery $ .animate()多个元素,但只触发一次回调

如果您选择要使用jQuery进行动画处理的类或元素集合:

$('.myElems').animate({....});
Run Code Online (Sandbox Code Playgroud)

然后还使用回调函数,最终会有很多不必要的animate()调用.

var i=1;
$('.myElems').animate({width:'200px'}, 200, function(){
    //do something else
    $('#someOtherElem').animate({opacity:'1'}, 300, function(){        
        if (i>1) console.log('the '+i+'-th waste of resources just finished wasting your resources');
        i++;
    });
});
Run Code Online (Sandbox Code Playgroud)

可以说这只是糟糕的代码和/或设计 - 但是我能做些什么,既避免了许多animate()调用,只有其中一个使用回调,并且需要执行大量不必要的回调并且使用我的代码/预期行为?

理想情况下,我只能编写一个只能运行一次的"一次性"回调 - 否则可能有一种有效的方法来测试某些东西是否已经被jQuery动画了?

示例:http://jsfiddle.net/uzSE6/(警告 - 这将显示大量警报框).

jquery jquery-callback jquery-animate

40
推荐指数
1
解决办法
1万
查看次数

如何让AJAX触发浏览器的加载指示器

我正在制作一个支持ajax的实验室调度程序,而且一些ajax操作并不是很快.

在Gmail中,当您转到收件箱,发送消息等时,浏览器会像加载一样(在FF中停止按钮变为启用状态,出现进度条),但它不在新页面上,而是通过AJAX完成.

他们如何做到这一点?我有一个小的spinny指示器,但是让浏览器像加载它一样很好.有任何想法吗?

browser ajax loading

36
推荐指数
2
解决办法
8390
查看次数

javascript如何判断一个数字是否是另一个数字的倍数

我正在为一家面料商店建造一个计算量很大的购物车,并且发现自己需要对用户输入的长度*每米的基本价格进行计算,然后检查结果以查看它是否是模式长度的倍数.如果它不是倍数,我需要找到最接近的模式长度倍数并将结果更改为.

我还需要能够在PHP中完成相同的计算,但如果有人可以帮我解决数学问题,我可以移植任何需要自己翻译的东西.

我正在使用jQuery 1.6.2并且已经完成了计算的第一部分,我只需要根据模式长度检查(米*价格)的结果.

任何帮助非常感谢

编辑:这些计算都涉及价格和模式长度的2位小数.用户输入的长度也可以包含小数.

javascript math jquery

22
推荐指数
4
解决办法
6万
查看次数

在Javascript中将rgb字符串转换为十六进制

我正在使用TweenMax JS库和ColorPropsPlugin,它将补间以多种格式指定的颜色值,我遇到的问题是结果总是以字符串的形式:

"rgb(255,255,255)"
Run Code Online (Sandbox Code Playgroud)

如何将其转换为十六进制数字,如:

0xffffff
Run Code Online (Sandbox Code Playgroud)

javascript rgb hex

19
推荐指数
4
解决办法
2万
查看次数

崇高的文本2 - 消除或美化HTML的方式

我发现自己粘贴了一大堆缩小的代码,我只需要一行代码.

而不是手动扫描并添加换行符以使其可读,Sublime中是否有选项可以执行此操作或插件?

例如,我有这个(虽然更长):

<html><head><title>some title</title></head><body><div><span>some content</span></div></body></html>

我想最终得到这个,而不是花半个小时按下键盘上的输入:

<html>
  <head>
    <title>some title</title>
  </head>
  <body>
    <div>
      <span>some content</span>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

unminify sublimetext2

17
推荐指数
2
解决办法
3万
查看次数