У меня есть массив объектов этой формы,
[{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, но он возвращает ложь,
Я попытался отследить результаты, 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;
}