Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在多维数组中搜索元素并在其位置返回值_Php_Arrays_Multidimensional Array - Fatal编程技术网

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

Php 在多维数组中搜索元素并在其位置返回值,php,arrays,multidimensional-array,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”,但

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

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

 $search = "Tom";
如何在数组中搜索特定值并在同一位置中找到下一项

假设搜索值是“Tom”,返回的值应该是“apple”,或者“Mike”应该返回“banana”

我猜像这样的
$values[0][1]
可以从数组中返回“apple”,但我不知道如何搜索特定的值(通过变量设置),而不必手动执行

总体:

  • 有一个多维数组

  • 有一个变量包含一个值(在其自身位置中始终为项[0])

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


如果使用命名键创建数组,则会更容易。请尝试以下操作,而不是多维数组:

$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')

要搜索的名称必须为$values[0][i] 其中,i从0迭代到c-1//c是列的编号。 找到名称后,我们返回$values[1][i]
作为它旁边的项目,您应该能够这样做:

 $find = $values[array_search($search, array_column($values, 0))][1];
array\u column
()提取第一个“列”(将多维数组视为一个表,每个较小的数组视为一行)。结果是:

 array(
   "Tom", 
   "Mike", 
   "Sam"
 )
array\u search
()然后在该数组中搜索您的
$search
值的第一个匹配项。对于
Tom
,这将产生
0

使用该索引,可以从数组中获取值

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

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

A?B:C
结构是。它是
if A then B else C
的缩写形式。你看过
foreach()上的文档了吗?