相关疑难解决方法(0)

isset()和array_key_exists()之间有什么区别?

以下两个函数调用如何比较:

isset($a['key'])

array_key_exists('key', $a)
Run Code Online (Sandbox Code Playgroud)

php

395
推荐指数
6
解决办法
12万
查看次数

PHP $ _SERVER ['HTTP_HOST']与$ _SERVER ['SERVER_NAME'],我是否正确理解了手册页?

我做了很多搜索,还阅读了PHP $ _SERVER文档.对于在我的网站中使用的简单链接定义,我的PHP脚本使用哪个权限?

$_SERVER['SERVER_NAME'] 是基于您的Web服务器的配置文件(在我的情况下是Apache2),并根据一些指令而变化:(1)VirtualHost,(2)ServerName,(3)UseCanonicalName等.

$_SERVER['HTTP_HOST'] 基于客户的要求.

因此,在我看来,为了使我的脚本尽可能兼容而使用的正确方法是$_SERVER['HTTP_HOST'].这个假设是否正确?

后续评论:

我想在读完这篇文章之后我有点偏执,并注意到有些人说"他们不会相信任何一个$_SERVER变种":

显然,讨论主要是关于$_SERVER['PHP_SELF']为什么你不应该在表单action属性中使用它而没有适当的转义以防止XSS攻击.

我对上述原始问题的结论是$_SERVER['HTTP_HOST'],即使在表单中使用,也可以"安全"地使用网站上的所有链接,而不必担心XSS攻击.

如果我错了,请纠正我.

php apache security owasp

153
推荐指数
6
解决办法
37万
查看次数

PHP - 检查数组索引是否存在或为空

有没有办法检查数组索引是否存在或为空isset()不会告诉您索引是否存在或存在但是为空.如果我这样做:isset($array[$index]) || is_null($array[$index])它将无法工作,因为如果索引不存在,is_null将崩溃.

我该怎么办?还有一种方法可以检查是否存在某些东西,无论它是否设置为null?

php arrays indexing null isset

20
推荐指数
3
解决办法
4万
查看次数

Isset与array_key_exists

在哪里issetarray_key_exist适合使用?

在我的情况下,两个都在工作.

if( isset( $array['index'] ) {
   //Do something
}    


if( array_key_exists( 'index', $array ) {
   //Do something
}
Run Code Online (Sandbox Code Playgroud)

php arrays

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

哪个更快,array_key_exists还是array_search?

可能重复:
确定PHP中是否存在数组键有哪些更快更好?

假设我想存储我在memcache上的朋友列表.有时我需要搜索用户是否在我的列表中,有时我需要获取所有朋友列表.

你会宁愿

$friends[] = $friend
Run Code Online (Sandbox Code Playgroud)

要么

$friends[$friend] = 1;
Run Code Online (Sandbox Code Playgroud)

理由是在没有惩罚速度的情况下尽可能地保存公羊.我没有找到任何关于php 5.3.8的案例研究可以帮助我解决我的小困境:在负载下,执行速度更快?

array_key_exists还是in_array?(即:foo是酒吧的朋友?)

此外,有时我需要获取整个朋友列表,所以我需要迭代整个列表,以建立一个朋友阵列.根本不确定第二种方法,因为我还不知道是否会有更多的array_search | array_key_exists | in_array或fetch of full friends list.

任何的想法?

php arrays performance

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

PHP,in_array和快速搜索(最后)在数组中

我怀疑在数组中进行快速搜索的更好方法是什么(我在谈论具体情况).

假设我有一个数组L = [A,B,C](当我开始时).当程序运行时,可能L会增长(但到最后),我将进行搜索的一种可能情况是L = [A,B,C,D,E].

事实是,当我搜索时,我想要找到的值可能只有D和E.现在我正在使用find_array(elem,array),但是这个函数不能被"调整"到搜索开始结束并减少索引,我"害怕"对于所有搜索,函数in_array将检查所有具有较低索引的元素,然后才能找到我正在搜索的值.

¿有另一种搜索功能更适合我的问题吗?¿如何在in_array函数内部工作?

提前致谢

php performance search

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

按键比较两个PHP数组

如果两个数组的键相等,最快的比较方法是什么?

例如.

array1:          array2:

'abc' => 46,     'abc' => 46,
'def' => 134,    'def' => 134,
'xyz' => 34,     'xyz' => 34, 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,结果应为TRUE(相同的键)

和:

array1:          array2:

'abc' => 46,     'abc' => 46,
'def' => 134,    'def' => 134,
'qwe' => 34,     'xyz' => 34, 
'xyz' => 34,    
Run Code Online (Sandbox Code Playgroud)

结果应为FALSE(某些键不同)

array_diff_key()返回一个空数组......

php arrays comparison multidimensional-array

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

我应该声明并检查PHP中是否存在变量?

我在XAMPP上注意到严格的错误报告已经开启,我现在得到了未定义的索引错误.我只有两个小问题(我还在这里学习):

我知道你不具备在PHP声明变量,但它有什么优势无论如何声明呢?如果没有,当我没有定义严格错误报告时,为什么会出现错误?

例如,当我使用get变量时,我会在运行类似函数之前检查它们的值

if($_GET['todo'] == 'adduser')
    runFunctionAddUser();
Run Code Online (Sandbox Code Playgroud)

这会产生错误,因为我从不检查get变量是否首先存在.我应该这样做

if(isset($_GET['todo']))
    if($_GET['todo'] == 'adduser')
        runFunctionAddUser();
Run Code Online (Sandbox Code Playgroud)

代替?这会有优势还是不必要而且缓慢?

php structure undefined isset

4
推荐指数
1
解决办法
2409
查看次数

PHP中的键与in_array()的微优化

因此,您可以选择构建数组,因为您知道在代码中需要检查数组中是否存在值.我看到它的方式至少有两个选择:

$values_array = array(
    'my_val',
    'my_val2',
    'and_so_on',
);

if(in_array('my_val', $values_array)) {
    var_dump('Its there!');
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用关联数组并使用键来包含您的值:

$values_array = array(
    'my_val'    => '',
    'my_val2'   => '',
    'and_so_on' => '',
);

if(isset($values_array['my_val'])) {
    var_dump('Its there!');
}
Run Code Online (Sandbox Code Playgroud)

你会选择哪种方法?为什么?您是否只是为了减少处理时间或减少使用的内存量?

也许你不会使用我的两个微不足道的方法,并有另一种很棒的方法来解决这个简单的问题.

这是一个没有考虑真实世界应用的理论问题,但阵列中可能有数千个选项.这是一个推测性的问题,真正看到每个人都认为哪种方法更好.是否因为可读性,速度或内存使用原因而被认为是这样.

php optimization micro-optimization

0
推荐指数
1
解决办法
615
查看次数