我正在研究类似的数组:
$users = array(
array( 'name' => "John", 'lastname' => 'doe'),
array( 'name' => "smith", 'lastname' => 'Jones'),
);
我想通过“名字”和数字搜索数组。返回其“姓氏”
示例:我有“john”这个名字&在搜索数组时我想要“Doe”作为返回值。
我尝试了以下功能,但
function my_function( $array, $name ) {
foreach( $array as $name ) {
.....
}
}
my_function($users, 'John');
但是我得到“为foreach()提供的无效参数”错误。
这样做的正确方法是什么?
答案 0 :(得分:0)
function my_function( $array, $name, $haystackkey, $returnkey) {
foreach( $array as $key => $item ) {
if (isset($item[$haystackkey]) && $item[$haystackkey] == $name) {
return $item[$returnkey];
}
}
}
呼叫
my_function ($array, 'John', 'name', 'lastname');
这将在$ array中搜索'name'为'John'的元素,并返回值og'lastname'。当然,如果不在其他环境中使用,您可以对最后2个参数进行硬编码。
小心,这只会返回首次出现。要获取列表或结果,请将return
替换为$result[]=...
。
答案 1 :(得分:0)
Yay for array reduction。不是最有效的方法,但很酷。
$found = array_reduce($users, function ($found, array $candidate) use ($name) {
return $found ?: ($candidate['name'] == $name ? $candidate['lastname'] : null);
});
答案 2 :(得分:0)
问题是$ name的重复使用
使用以下代码,当输入为“John”时,我会得到“doe”
$users = array(
array( 'name' => "John", 'lastname' => 'doe'),
array( 'name' => "smith", 'lastname' => 'Jones'),
);
function my_function( $array, $name ) {
foreach( $array as $row ) {
if($row['name'] == $name) {
return $row['lastname'];
}
}
}
echo my_function($users, 'John');