php - 检查二维关联数组中的字符串,返回信息(PHP)

标签 php arrays multidimensional-array

我正在学习 PHP,我希望在数组中搜索给定的字符串,如果匹配则返回一些值。我尝试过使用 in_array()array_search 但两者都无法正确匹配/返回值。

print_r($names);

Array
(
    [0] => Array
        (
            [name] => A
            [age] => 42
            [location] => Australia
        )

    [1] => Array
        (
            [name] => B
            [age] => 21
            [location] => France
        )

    [2] => Array
        (
            [name] => Z
            [age] => 50
            [location] => Japan
        )
)

我想检查数组中是否存在名称并返回同一索引位置的信息。

$name="A";
if (in_array($name, $names)) {
    $age=$names['age'];
    $location=$names['location'];
    echo "$name was found! Their Age is: $age, They are based in: $location";
}
else{
    echo"$name was not found";
}

但是,未找到该姓名,并且未加载年龄和位置数据。

输出:

A was not found

预期输出:

A was found! Their Age is: 42, They are based in: Australia

使用 array_search() 进行测试

$result = array_search("$name",$names);
echo $result;

没有打印任何值。

任何有关如何修复 (in_array) 或如何使用 array_search() 列出信息的反馈,我们将不胜感激。

最佳答案

你可以试试这个 -

$position = array_search($name, array_column($your_array, 'name'));
$info = $your_array[$position];

说明

array_column($your_array, 'name')

将返回包含所有名称和相应索引的数组。

array_search($name, array_column($your_array, 'name'))

将返回找到该名称的索引。

$info = $your_array[$position]

将特定子数组存储在$info中。

所以它应该是这样的 -

echo $info['name'] . " was found! Their Age is: " . $info['age'] . ", They are based in: " . $info['location'];

array_column() & array_search()

Working code

关于php - 检查二维关联数组中的字符串,返回信息(PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42219445/

相关文章:

php - 分解字符串,仅在分解匹配的最后一次出现时

java - 处理未定义大小的数组

php - 从查询创建多数组

c++ - 使用二维数组作为参数的函数调用

php - 如何判断是否有任何 MySQL 连接已断开或超时?

php - 搜索每个单词并过滤少于 x 的字符数

php - 如果页面为空,如何重定向

c - 由于带有图像表面阵列的 SDL_Flip,SDL 窗口关闭

javascript - 在多维数组上使用 javascript forEach 和拼接

jquery - 在 jQuery 中使用 OO 概念,使用 function() 并创建结构数组