标签: array-key-exists

为什么array_key_exists比引用数组上的isset慢1000?

我发现如果在数组引用中设置了一个键,则array_key_existsisset检查时慢1000倍.是否有人了解PHP的实现方式解释了为什么这是真的?

编辑:我添加了另一个案例,似乎指出在使用引用调用函数时需要开销.

基准示例

function isset_( $key, array $array )
{
    return isset( $array[$key] );
}

$my_array = array();
$start = microtime( TRUE );
for( $i = 1; $i < 10000; $i++ ) {
    array_key_exists( $i, $my_array );
    $my_array[$i] = 0;
}
$stop = microtime( TRUE );
print "array_key_exists( \$my_array ) ".($stop-$start).PHP_EOL;
unset( $my_array, $my_array_ref, $start, $stop, $i );

$my_array = array();
$start = microtime( TRUE );
for( $i = 1; $i < 10000; $i++ ) { …
Run Code Online (Sandbox Code Playgroud)

php performance reference isset array-key-exists

22
推荐指数
2
解决办法
9955
查看次数

array_key_exists($ key,$ array)vs!empty($ array [$ key])

我见过很多人做过前者,有没有比其他人更好的表现?或者它只是一个眼睛糖果?我个人每次都使用后者,因为它更短,个人对我更具可读性.

php arrays array-key-exists

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

检查数组中是否存在值

我正在尝试此代码来检查数组中是否存在值.

$arr = array ('2' => '0', '3' => '0.58');

$num=3;
if (array_key_exists($num, $arr)) {
    echo (array_key_exists($num, $arr)); //show the index, in this case 1
}
Run Code Online (Sandbox Code Playgroud)

我想要的是显示相应的价值,换句话说, 0.58

我怎样才能做到这一点 ?

php arrays array-key-exists

3
推荐指数
1
解决办法
7995
查看次数

PHP array_key_exists不起作用; 数组不是多维的

我有一系列世界上所有国家:

$countries = array(
  "GB" => "United Kingdom",
  "US" => "United States",
  "AF" => "Afghanistan",
  "AL" => "Albania",
  "DZ" => "Algeria",
  "AS" => "American Samoa",
  "AD" => "Andorra",
  "AO" => "Angola",
  "AI" => "Anguilla",
  "AQ" => "Antarctica",
  "AG" => "Antigua And Barbuda",
  "AR" => "Argentina",
  "AM" => "Armenia",
  "AW" => "Aruba",
  "AU" => "Australia",
  "AT" => "Austria",
  "AZ" => "Azerbaijan",
  "BS" => "Bahamas",
  "BH" => "Bahrain",
  "BD" => "Bangladesh",
  "BB" => "Barbados",
  "BY" => "Belarus",
  "BE" => "Belgium",
  "BZ" => …
Run Code Online (Sandbox Code Playgroud)

html php forms arrays array-key-exists

3
推荐指数
1
解决办法
5401
查看次数

PHP array_key_exists键LIKE字符串,是否可能?

我做了很多搜索,但无法弄清楚这个.

我有这样一个数组:

$array = array(cat => 0, dog => 1);
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的字符串:

I like cats.
Run Code Online (Sandbox Code Playgroud)

我想看看字符串是否匹配数组中的任何键.我尝试以下但显然它不起作用.

array_key_exists("I like cats", $array)
Run Code Online (Sandbox Code Playgroud)

假设我可以在给定时间获得任何随机字符串,我该怎么做这样的事情?

伪代码:

array_key_exists("I like cats", *.$array.*)
//The value for cat is "0"
Run Code Online (Sandbox Code Playgroud)

请注意,我想检查是否存在任何形式的"cat".它可以是猫,天使,甚至像vbncatnm这样的随机字母.我从一个mysql数据库获取数组,我需要知道哪个ID猫或狗.

php database string pattern-matching array-key-exists

3
推荐指数
1
解决办法
1778
查看次数

是(isset(..)|| array_key_exists(...))检测空值的更快方法,而不仅仅是array_key_exists(...))?

在研究如何检测数组中的空值时,我在http://www.php.net/manual/en/function.array-key-exists.php手册页下看到了一些用户的评论.

它说

if (isset(..) || array_key_exists(...))
{
...
}
Run Code Online (Sandbox Code Playgroud)

比做更快

if array_key_exists(...))
{
...
}
Run Code Online (Sandbox Code Playgroud)

发布了100000次运行的基准测试

array_key_exists() : 205 ms
is_set() : 35ms
isset() || array_key_exists() : 48ms
Run Code Online (Sandbox Code Playgroud)

我的问题:

(isset(..) || array_key_exists(...))不是更快array_key_exists()?如果是这样,为什么?

编辑:在写出这个问题时,我想我找到了答案.无论如何,我决定发布这个问题,看看我的想法是否正确.

php arrays isset array-key-exists

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

array_key_exists运行不正常

我有这个数组:

$variableNames = [
        'x1',
        'x2',
        'x3',
        'x4',
        'x5',
        'x6',
        'x7'
    ];
Run Code Online (Sandbox Code Playgroud)

但是,当我使用这样的array_key_exists函数时:

array_key_exists('x3', $this->variableNames)
Run Code Online (Sandbox Code Playgroud)

它回来了false.但是,如果我有这个数组:

$variableNames = [
        'x1' => null,
        'x2' => null,
        'x3' => null,
        'x4' => null,
        'x5' => null,
        'x6' => null,
        'x7' => null
    ];
Run Code Online (Sandbox Code Playgroud)

它回来了true.我如何使用第一个数组,并得到true?在第一个数组中,值也是null,就像第二个数组一样.那么,为什么第一个数组返回false而第二个数组返回true

php arrays array-key-exists

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

PHP array_key_exists错误返回FALSE

我的数据是从客户的CMS中提取的,但结果却很奇怪

print_r($appliance_data);
foreach ($appliance_data as $adKey => $adValue) {
    print_r($adKey);
    print_r($adValue);
    print_r(array_key_exists($adKey, $appliance_data));
    print_r(isset($appliance_data[$adKey]));
}
Run Code Online (Sandbox Code Playgroud)

带输出

Array
(
    [94] => stdClass Object
        (
            [operation] => 0
            [value] => 0
        )

    [102] => stdClass Object
        (
            [operation] => 501
            [value] => 4
        )

    [90] => stdClass Object
        (
            [operation] => 0
            [value] => 0
        )
)
94
stdClass Object
(
    [operation] => 0
    [value] => 0
)
(boolean) FALSE
(boolean) FALSE
102
stdClass Object
(
    [operation] => 501
    [value] => 4 …
Run Code Online (Sandbox Code Playgroud)

php array-key-exists

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

PHP - 搜索数组

我有一个类似如下的数组:

Array ( 
[0] => Array ( 
[slideID] => 3 
[parentSlideID] => 1 
[subSlideOrder] => 1 
[headline] => 
[copy] => 
[colourID] => 0 
[URL] => 2.jpg 
[category] => 1 
[visible] => 1 
[slideOrder] => 2 
[type] => 0 ) 

[1] => Array ( 
[slideID] => 3 
[parentSlideID] => 1 
[subSlideOrder] => 1 
[headline] => 
[copy] => 
[colourID] => 0 
[URL] => 2.jpg 
[category] => 1 
[visible] => 1 
[slideOrder] => 2 
[type] => 0 ) 

[2] => Array ( 
[slideID] …
Run Code Online (Sandbox Code Playgroud)

php arrays search array-key-exists

-2
推荐指数
1
解决办法
251
查看次数

如何检查数组索引是否存在于go中

我来自 javascript 并且知道如何检查变量是否存在。我们可以用!!var

我在 Go 中遇到了一个数组,我想知道索引是否存在:

myArr := []int{1, 2, 3}

if myArr[3] {
  fmt.Println("YES")
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它给了我一个错误: Index Out Of Range: 3

go array-key-exists

-3
推荐指数
1
解决办法
2398
查看次数