我有通过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]在其位置)
答案 0 :(得分:1)
你应该能够这样做:
$find = $values[array_search($search, array_column($values, 0))][1];
array_column
(documentation)提取您的第一个“列”(将多维数组视为一个表,每个较小的数组作为一行)。结果是:
array(
"Tom",
"Mike",
"Sam"
)
array_search
(documentation)然后在此数组中搜索$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] 作为旁边的项目