【问题标题】:Find Value in Array在数组中查找值
【发布时间】:2011-01-16 00:24:14
【问题描述】:

以下数组是从我的数据库输出的。

$this->db->select('code')->from('table');
$array = $this->db->get()->result_array();

//Output:
Array ( [0] => Array ( [code] => ASDF123 ) [1] => Array ( [code] => ASDF124 ) )

如何查找该数组中是否包含变量?

即。

if(this_is_in_array($value, $array) == TRUE)...

用 PHP 最简单的方法是什么?

对于第一次没有正确措辞,我深表歉意。

【问题讨论】:

  • 您应该考虑重新表述您的问题。不幸的是,很难理解你在问什么。
  • 是的,请重新表述您的问题。
  • 是的,确实如此。精彩的。 :)

标签: php


【解决方案1】:

如果您希望找到数组的 KEY,请参考 array_key_exists() 方法。 这方面的一个例子是:

$array = array(
    'key1' => 'value1',
    'key2' => 'value2'
);

if ( array_key_exists( 'key2', $array ) )
    return TRUE;

但是,如果您希望找到数组的 VALUE,则可以参考 in_array() 方法。这方面的一个例子是:

$array = array(
    'key1' => 'value1',
    'key2' => 'value2'
);

if ( in_array( 'value1', $array ) )
    return TRUE;

凯文:

foreach( $array as $key => $values )
{
    if ( $values['code'] == 'ASD1234' )
    {
        // do something
    }
}

【讨论】:

  • 你是对的,克里斯。如果我的数组看起来像这样愚蠢,我该怎么办:Array ( [0] => Array ( [code] => ASDF123 ) [1] => Array ( [code] => ASDF124 ) ) 那就是我的数据库向我吐口水。
  • 我仍然不确定您要访问/比较某些内容的确切部分。如果您尝试获取每个元素的实际代码值,您可以运行一个 foreach,然后执行一个 if 语句来检查代码是否符合预期,成功时退出或继续循环。
  • 我在之前的评论中添加了一个示例,以便您更容易理解。
  • foreach 是我想要的。
  • 太棒了!很高兴我能提供帮助!
【解决方案2】:

把你的数组变成这样:

$your_array = array('key1'=>'value1', 'key2'=>'value2');

然后使用它来查看该键是否存在于数组中。

if (array_key_exists('key2', $your_array)) {

【讨论】:

  • 我的示例中的数组是从数据库输出的...我可以将它操作成一个更有用的数组吗?
  • 另外,我相信我的意思是找到一个值,而不是关键...对不起!
【解决方案3】:

不确定您在问题中的确切含义,但是,要回答您的问题标题,您可以使用array_key_exists() 函数来检查给定的键或索引是否存在于数组中。

【讨论】:

  • 你能告诉我我的具体阵列吗?我是菜鸟。
  • 作为一个菜鸟不能成为至少checking the manual如何使用它的借口......
  • 感谢您编辑您的问题。但是,我不清楚您是否要检查 key 是否在数组中,或者您要检查的是 value 吗?
  • 在这种情况下,您可以使用in_array 函数测试一个值是否在数组中。
【解决方案4】:

将您的验证放入函数中

$input = 'ASDF123';

function check_input($input) {
    $array = array(
        0 => array('code' => 'ASDF123'),
        1 => array('code' => 'ASDF124')
    );
    foreach ($array as $codes) {
        if (in_array($input, $codes)) {
            return true;
        }
    }

    return false;
}

【讨论】:

    【解决方案5】:
    $needle = 'ASDF123';
    $ary = Array(
      Array('code' => 'ASDF123'),
      Array('code' => 'ASDF124')
    );
    $_ = "return (\$a['code']='".addslashes($needle)."');";
    if (count(array_filter($ary[0],create_function('$a',$_))) > 0)
      //true
    

    我认为(只是因为您使用了两次code,所以我认为这不是搜索字段——或者这是一个语义问题)。如果它是语义,正如其他人已经建议的那样,试试array_key_exists

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      • 2014-02-09
      • 2012-09-04
      相关资源
      最近更新 更多