【问题标题】:php search in two dimensional array [duplicate]php在二维数组中搜索[重复]
【发布时间】:2018-01-16 22:20:17
【问题描述】:

我开发了一个程序来获取包含 user_id 和他们的技能的用户技能数组,这个数组是这样的:

array(4) {
   [17]=>
     array(3) {
        [0]=>
          string(8) "word"
        [1]=>
          string(10) "power point"
        [2]=>
          string(28) "excel"
       }
   [16]=>
    array(3) {
    [0]=>
     string(14) "english
    [1]=>
     string(14) "french"
    [2]=>
    string(12) "farsi"
  }
 }

键是 user_id,值是技能数组,现在我想搜索具有两个值的 user_id:english 或 word,我希望返回 17、16,我该怎么做? ,谢谢你的帮助:)

【问题讨论】:

  • 我看到了那个问题,我认为在数组中搜索 id,我只是搜索多值,我可以再做一次吗?
  • 用户 id 16 和 17 没有您想要的两个值(英语、单词)!它们在每个 id 中只有一个值
  • StackOverflow 不是教程网站,也不是搜索引擎替代品。我们可以提供帮助,但首先是您的工作。先Put some efforts,然后用明确的解释询问,如果适用,MCV example
  • @ShahinA.M,将您的描述更改为 以搜索具有两个值的 user_ids :english OR word
  • 我知道 StackOverflow 是什么以及它的用途,我只是想知道其他想法,所以,你可以忽略我的问题并享受 :)

标签: php arrays associative-array


【解决方案1】:

使用array_intersect函数的解决方案:

$arr = [ 17 => ["word", "power point", "excel"], 16 => ["english", "french", "farsi"] ];
$search_keys = ["english", "word"];
$keys = [];

foreach ($arr as $k => $v) {
    if (array_intersect($search_keys, $v)) $keys[] = $k;
}

print_r($keys);

输出:

Array
(
    [0] => 17
    [1] => 16
)

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2016-09-12
    • 2013-01-25
    • 1970-01-01
    相关资源
    最近更新 更多