【问题标题】:Search for an element in a multidimensional array and return a value in its location在多维数组中搜索一个元素并在其位置返回一个值
【发布时间】:2017-04-22 16:50:18
【问题描述】:

我通过 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] 在其位置)

【问题讨论】:

  • 你看过foreach()上的文档了吗?

标签: php arrays multidimensional-array


【解决方案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 的缩写形式。

【讨论】:

    【解决方案2】:

    如果你创建一个带有命名键的数组会更容易。而不是多维数组尝试这样的事情:

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

    【讨论】:

      【解决方案3】:

      要搜索的名称必须在 $values[0][i] 中 我从 0 迭代到 c-1 //c 是第一个。上校 当找到名称时,我们返回 $values[1][i] 作为它旁边的项目

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-10
        • 2013-08-29
        • 2021-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多