在多维数组中搜索元素并在其位置返回值

时间:2017-04-22 16:50:19

标签: php arrays multidimensional-array

我有通过PHP创建的这个多维数组:

 $values = array
 (
   array("Tom", "apple"),
   array("Mike", "banana"),
   array("Sam", "coconut")
 );

 $search = "Tom";

如何在数组中搜索特定值并在同一位置找到下一个项目?

假设搜索值为“Tom”,返回的值应为“apple”或“Mike”应返回“banana”。

我想像$values[0][1]这样的东西能够从数组中返回“apple”,但我不知道如何搜索特定值(通过变量设置)而不是必须这样做手动。

总体:

  • 有一个多维数组

  • 有一个包含值的变量(在自己的位置始终为item [0]

  • 应该返回搜索到的内容旁边的值(项目[1]在其位置)

3 个答案:

答案 0 :(得分:1)

你应该能够这样做:

 $find = $values[array_search($search, array_column($values, 0))][1];

array_columndocumentation)提取您的第一个“列”(将多维数组视为一个表,每个较小的数组作为一行)。结果是:

 array(
   "Tom", 
   "Mike", 
   "Sam"
 )

array_searchdocumentation)然后在此数组中搜索$search值的第一次出现。如果是Tom,则会产生0 使用该索引,您可以从数组中获取值。

如果您不确定数组中是否存在该值,请先检查:

$index = array_search($search, array_column($values, 0));
$find = $index !== false ? $values[$index][1] : false;

A ? B : C构造是ternary operator。它是if A then B else C的简短形式。

答案 1 :(得分:0)

如果使用命名键创建数组,会更容易。而不是多维数组尝试这样的事情:

$values = [
    "Tom" => "apple",
    "Mike" => "banana"
]

甚至

   $values = [
        "Tom" => [
            "fruit" => "apple",
            "car" => "Audi"
        ],
        "Mike" => [
            "fruit" => "banana",
            "car" => "VW"
        ]
    ]

并搜索

function getUserKeyValue($username, $key){
    return isset($values[$username][$key] ? $values[$username][$key] : null;
}

例如

getUserKeyValue('Tom', 'fruit') or getUserKeyValue('Mike', 'car')

答案 2 :(得分:0)

要搜索的名称必须是$ values [0] [i] 其中我从0迭代到c-1 // c是否。 col。 当找到名称时,我们返回$ values [1] [i] 作为旁边的项目