代码之家  ›  专栏  ›  技术社区  ›  asanas

php:如何从另一个对象数组中的数组中查找值

  •  -2
  • asanas  · 技术社区  · 6 年前

    我有一个主数组,数组x

    [
    {'id': 3, 'name':'A'},
    {'id': 5, 'name':'B'}
    ]
    

    同时,我还有另一个数组,数组y:[3,5,12]

    我的目标是检查数组y中的任何值是否作为id存在于数组x中的任何对象中。即使有一个匹配项,我也希望返回true。

    我尝试了array_search()和array_in(),但我不知道如何编写逻辑。

    感谢您的帮助。这是PHP的

    4 回复  |  直到 6 年前
        1
  •  2
  •   Yash Parekh niee    6 年前



    $x id $y

    $x = json_decode('[{"id": 3, "name":"A"},{"id": 5, "name":"B"}]', TRUE);
    $y = [3,5,12];
    $search = search($x, $y);
    echo $search;
    function search($x, $y) {
        foreach($x as $val){
          if (in_array($val['id'], $y))
              return "exists";
        }
        return "not exists";
    }
    
        2
  •  0
  •   ggorlen Hoàng Huy Khánh    6 年前

    $x = [
      ['id' => 3, 'name' => 'A'],
      ['id' => 5, 'name' => 'B']
    ];
    $y = [3, 5, 12];
    $z = [1, 14, 13];
    
    function any_in_arr($needle_arr, $haystack, $field) {
      foreach ($haystack as $h) {
        foreach ($needle_arr as $n) {
          if ($h[$field] === $n) { return true; }
        }
      }
    
      return false;
    }
    
    var_dump(any_in_arr($y, $x, 'id')); // true
    var_dump(any_in_arr($z, $x, 'id')); // false
    
        3
  •  0
  •   sanjeev    6 年前

    [{"id": 3,"name": "A"},{"id": 5,"name": "B"}]
    

    function findInJson($searchArray){
        $jsonString = '[{"id": 3,"name": "A"},{"id": 5,"name": "B"}]';
        $jsonArray  = json_decode($jsonString, true); // Incase you want to user your own array you can use it here
        $keys       = array_column($jsonArray, 'id');
        return (count(array_intersect($keys, $searchArray)) !== 0);
    
    }
    // Call like this
    $common = findInJson([3,5,12]);
    
    var_dump($common);
    
        4
  •  0
  •   Ravi Hirani    6 年前

    $x = json_decode('[{"id": 3, "name":"A"},{"id": 5, "name":"B"}]', true);
    $x = array_column($x,'name','id');
    $y = [3,5,12];
    $y = array_flip($y);    
    $res = array_intersect_key($x, $y);    
    echo empty($res) ? 'not exist' : 'exist';