从multidimentionnal数组中的值获取键

时间:2016-11-23 13:54:24

标签: php arrays multidimensional-array

我有一个1500个英语同义词的数组,格式如下:

array(1521) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "April"
    [1]=>
    string(3) "Apr"
  }
  [1]=>
  array(7) {
    [0]=>
    string(5) "China"
    [1]=>
    string(26) "People's Republic of China"
    [2]=>
    string(14) "mainland China"
    [3]=>
    string(15) "Communist China"
    [4]=>
    string(9) "Red China"
    [5]=>
    string(3) "PRC"
    [6]=>
    string(6) "Cathay"
  }
  [2]=>
  array(2) {
    [0]=>
    string(8) "December"
    [1]=>
    string(3) "Dec"
  }
  [3]=>
  array(4) {
    [0]=>
    string(5) "Earth"
    [1]=>
    string(5) "earth"
    [2]=>
    string(5) "world"
    [3]=>
    string(5) "globe"
  }

  ...

  [1519]=>
  array(2) {
    [0]=>
    string(4) "year"
    [1]=>
    string(10) "solar year"
  }
  [1520]=>
  array(2) {
    [0]=>
    string(4) "zero"
    [1]=>
    string(4) "null"
  }
}

我试图创建一个单词并返回子数组键的函数

例如:

$result = get_synonym_family($array, "world");
echo $result; //3

我尝试将我在已经存在的stackoverflow问题上找到的一些示例结合起来,但没有什么能满足我的需求

2 个答案:

答案 0 :(得分:0)

您可以使用foreach函数遍历数组中的所有值,然后使用in_array函数检查内部数组中是否存在该值:

function get_synonym_family($array, $word) {
    foreach($array as $key => $sub_array) {
        if (in_array($word, $sub_array)) {
            return $key;
        }
    }

    return false;
}

答案 1 :(得分:0)

<?php
$array = [1 => ['apple','ball'.'cat'],2 => ['foo'.'bar']];

function get_synonym_family($id, $array) {
   foreach ($array as $key => $val) {
       foreach($val as $a)
       {
          if($a == $id)
          {
              return $key;
          }
       }

   }
   return null;
}

echo searchForId('apple',$array);