这个问题仅供我使用,因为我总是喜欢编写优化的代码,这些代码也可以在便宜的慢速服务器(或具有大量流量的服务器)上运行
我环顾四周,无法找到答案.我想知道这两个例子之间的速度有多快,记住我的情况下数组的键并不重要(伪代码自然):
<?php
$a = array();
while($new_val = 'get over 100k email addresses already lowercased'){
if(!in_array($new_val, $a){
$a[] = $new_val;
//do other stuff
}
}
?>
<?php
$a = array();
while($new_val = 'get over 100k email addresses already lowercased'){
if(!isset($a[$new_val]){
$a[$new_val] = true;
//do other stuff
}
}
?>
Run Code Online (Sandbox Code Playgroud)
由于问题的关键不在于数组冲突,我想补充一点,如果你害怕碰撞插入$a[$new_value],你可以使用$a[md5($new_value)].它仍然可能导致冲突,但是当从用户提供的文件中读取时会从可能的DoS攻击中消失(http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html)
我有一个文件名($fname),然后我需要$pClass用" - " 分配给文件类型.目前我总是得到text-,无论它是什么文件类型.
//This gets the extention for the file and assigns the class to the icon <i>
$pieces = explode('.', $fname);
$ext = array_pop($pieces);
if($ext == (('txt')||('rtf')||('log')||('docx'))){
$pClass = 'text-';
}
else if($ext == (('zip')||('sitx')||('7z')||('rar')||('gz'))){
$pClass = 'archive-';
}
else if($ext == (('php')||('css')||('html')||('c')||('cs')||('java')||('js')||('xml')||('htm')||('asp'))){
$pClass = 'code-';
}
else if($ext == (('png')||('bmp')||('dds')||('gif')||('jpg')||('psd')||('pspimage')||('tga')||('svg'))){
$pClass = 'image-';
}
else {
$pClass = '';
}
Run Code Online (Sandbox Code Playgroud)
为什么带有OR运算符的if语句不起作用?
是否有更短的编写方式(不使用正则表达式或字符串匹配函数)?
if($page=='page1.php' || $page=='page2.php' || $page=='page3.php' || $page=='page4.php'){ do something...}
Run Code Online (Sandbox Code Playgroud)
我正在寻找类似的东西:
if($page==('page1.php', 'page2.php', 'page3.php', 'page4.php')){do something...}
Run Code Online (Sandbox Code Playgroud)
但我知道这是不正确的.有什么建议?
以下是哪种条件陈述是最佳做法:
if ($_GET['type'] == 'user' || $_GET['type'] == 'salesmen')
Run Code Online (Sandbox Code Playgroud)
要么
if ($_GET['type'] == ('user' || 'salesmen'))
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
可能重复:
比较PHP中的多个值
我想做这样的事情
if($abc="asdf","sdfg","dfgh") {
echo "Something";
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?我必须使用单独的规则||吗?
如果hop_nr是波纹管的数字,我怎么能显示这个图像.
if $man->hop_nr == AA44000000 or AA44738483 or AA45665839 or AA45697117 or AA45853322 or AA46593303 or AA46913044 or AA46913252 or AA46913631 or AA47362505 or AA47442114 or AA47452676 or AA47512000 or AA47542321 or AA47564838 or AA47592086, AA48622280 or AA48632711 or AA48644000 or AA48660000 or AA48666000 or AA49732000, AA49742000 or AA49781113 or AA49819308 or AA49831888 or AA49851138 or AA49890383
节目 <img src="/media/store_logos/tlogo.png”>