我正在学习 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'];
关于php - 检查二维关联数组中的字符串,返回信息(PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42219445/