【发布时间】:2019-06-25 01:06:21
【问题描述】:
我有一个这种形式的对象数组,
[{value => 1, name => "Ha"},
{value => 2, name => "Hi"},
{value => 3, name => "Ho"},
.....]
和一个应该返回给定名称的值的函数,
功能是:
public function get_value_from_name($myArray, $name){
$arrays = $myArray;
foreach ($arrays as $arr){
if ($name == $arr->name){
return $arr->value;
}
}
return false;
}
}
当我使用函数并以这种方式传递数组和字符串时 get_value_from_name($myArray, "嗨") 我希望得到一个 2 但它返回 false, 我尝试跟踪结果,foreach 循环遍历整个数组,但我认为 $arr->name 没有给出任何东西,我不确定。 你能检查一下我的函数是否有问题吗,我是 PHP 新手。
提前致谢。
编辑**********更新: 这就是我调试时得到的结果
public function get_value_from_name($arr, $names){ //$arr: {[2], [2], [2], [2] + 72 more} $names: "Hi"
$arrays = $arr; //{ $arrays: {[2], [2], [2], [2] + 72 more}
foreach ( $arrays as $array ){ // $arrays: {[2], [2], [2], [2] + 72 more} $array: {value => 79, name => "HiHiHiHiHiHi"}[2]
if ( $array->name == $names) //{$names: "Hi"
return $array->value;
}
}
return false;
}
我的解决方案: 我设法使它以这种方式工作,但是有人可以解释为什么第一个功能不起作用,
public function get_id_from_name($arr, $names){
$arrays = $arr;
$nameArray = array_column($arrays, 'name');
$valueArray = array_column($arrays, 'value');
foreach (array_combine($valueArray, $nameArray) as $value=> $name) {
if ($name == $names) {
return $value;
}
}
return false;
}
【问题讨论】: