【问题标题】:Search an Array for a Specific Value using PHP使用 PHP 在数组中搜索特定值
【发布时间】:2013-10-10 18:51:57
【问题描述】:

我正在尝试在数组中搜索给定值。找到此值后,我需要 array key 值来访问数组中的其他信息。这是我需要搜索的数组:

array(3) {
  [0]=>
  array(20) {
    ["FirstName"]=>
    string(7) "Person1"
    ["LastName"]=>
    string(7) "Person1"
    ["UserId"]=>
    int(5632414)
  }
  [1]=>
  array(20) {
     ["FirstName"]=>
    string(7) "Person2"
    ["LastName"]=>
    string(7) "Person2"
    ["UserId"]=>
    int(5632414)
  }
  [2]=>
  array(20) {
     ["FirstName"]=>
    string(7) "Person3"
    ["LastName"]=>
    string(7) "Person3"
    ["UserId"]=>
    int(5632414)
  }
}

我正在数组中搜索特定的 UserId。我尝试了几段代码,但似乎都没有。当我运行脚本时,我得到的只是一个空白屏幕。这是我最新的代码:

$array = json_decode($output);

for ($x = 0; $x <= count($array); $x++) {
    $key = array_search('5632414', $array);
    echo $key;
}

【问题讨论】:

  • $array = json_decode($output); 给出一个对象,而不是一个数组。您需要将true 作为第二个参数传递以使其成为一个。 $array = json_decode($output, true);
  • 应该是$x &lt; count($array),否则会漏掉最后一个元素。
  • 其实应该是“否则你会越过最后一个元素”。
  • @RichardA 谢谢你。我已经更新了我的代码
  • 这个问题已经asked

标签: php arrays json search


【解决方案1】:

array_search 只能用于一维数组。在您的情况下,您不是在顶级数组中寻找字符串,而是关联子数组之一的值。

foreach ($array as $key => $subarray) {
    if ($subarray['UserId'] == 5632414) {
        echo $key;
    }
}

【讨论】:

    【解决方案2】:

    从您发布的var_dump 输出来看,您似乎可以执行以下操作:

    $array = json_decode($output);
    
    for ($x = 0; $x < count($array); $x++) {
        if ( $array[ x ][ "UserId" ] === $the_value_I_am_looking_for )
        {
            //Then do something
        }
    }
    

    【讨论】:

      【解决方案3】:

      试试这个:

      function findIn($find, $inArray){
        foreach($inArray as $a){
          foreach($a as $i => $v){
            if($v === $find){
              return $i;
            }
          }
        }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-27
        • 1970-01-01
        • 2019-09-13
        • 2019-12-29
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多