【问题标题】:php compare array keys, not valuesphp比较数组键,而不是值
【发布时间】:2015-08-20 16:55:36
【问题描述】:

我已成功使用 array_key_exists(),如 php.net 所述

例子:

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>

但是,取出值,它不起作用。

<?php
$search_array = array('first', 'second');
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>

不确定如何仅通过键比较 2 个数组。

【问题讨论】:

  • “仅通过键比较 2 个数组”是什么意思?

标签: php arrays key-value


【解决方案1】:

第一个例子是一个关联数组:分配了值的键。第二个例子只是一种更漂亮的说法:

array(0 => 'first', 1 => 'second')

第二个,您需要使用in_array。您不应该检查键是否存在,array_key_exists 会检查,而应该检查值是否存在,in_array 会检查。

if(in_array('first', $array))

【讨论】:

    【解决方案2】:

    在 PHP 中,数组中的每个元素都有两部分:keyvalue

    除非您手动说出要附加到每个值的键,否则 PHP 会为每个元素提供一个数字索引,从 0 开始,以 1 递增。

    那么区别

    array('first','second')
    

    array('first'=>1,'second'=>4)
    

    是第一个没有用户定义的键。 (它实际上有键 0 和 1)

    如果你要先做print_r(),它会说类似

    Array {
        [0] => "first",
        [1] => "second"
    }
    

    而第二个看起来像

    Array {
        ["first"]  => 1,
        ["second"] => 2
    }
    

    因此,要检查 key "first" 是否存在,您可以使用

    array_key_exists('first',$search_array);
    

    要检查 value “first”是否存在,您可以使用

    in_array('first',$search_array);
    

    【讨论】:

      【解决方案3】:

      在第二个示例中,您没有分配数组键 - 您只是设置了一个基本的对象“列表”

      使用in_array("first", $search_array); 检查值是否在常规数组中

      【讨论】:

        【解决方案4】:

        在您的第二个示例中,键是数字,您的 $search_array 实际上看起来像这样:

        array(0=>'first', 1=>'second');
        

        所以他们 key 'first' 不存在,value 'first' 存在。所以

        in_array('first', $search_array);
        

        是您想要使用的功能。

        【讨论】:

          【解决方案5】:

          在 PHP 中,如果你没有给数组元素提供键,它们将采用默认键值。这里你的数组将在内部如下所示

           $search_array = array(0=>'first', 1=>'second');
          

          无论如何,您仍然可以通过使用下面的 array_flip 函数来解决这个问题。

          $search_array = array('first', 'second');
          if (array_key_exists('first', array_flip($search_array))) {
              echo "The 'first' element is in the array";
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-04-01
            • 2020-04-10
            • 2020-03-07
            • 2020-08-23
            • 1970-01-01
            • 1970-01-01
            • 2012-04-15
            相关资源
            最近更新 更多