我需要从数组中找到特定值的最后找到的元素。我在php中给出了一个我正在寻找的实例。
$Data = array(
'0' => 'car',
'1' => 'bike',
'2' => 'bus',
'3' => 'bike',
'4' => 'boat'
);
$key = array_search('bike', $Data) // it returns $key = 1 as result which the first element matched inside the array.
我想要$key = 3
这是最后一个匹配的元素。
任何建议都表示赞赏。
答案 0 :(得分:2)
这是一种更简单,性能更高的方式。因为它只计算一次,你可以多次访问它。 live demo。
$data = array_flip($Data);
echo $data['bike'];
翻转后,只保留相同元素的最后一个元素。这是print_r($data)
Array
(
[car] => 0
[bike] => 3
[bus] => 2
[boat] => 4
)
答案 1 :(得分:1)
我们可以使用array_reverse
来反转数组。
$key = array_search('bike', array_reverse($Data,true));
它将返回3.
答案 2 :(得分:1)
<?php
ini_set("display_errors", 1);
$Data = array(
'0' => 'car',
'1' => 'bike',
'2' => 'bus',
'3' => 'bike',
'4' => 'boat'
);
$toSearch="bike";
$index=null;
while($key=array_search($toSearch, $Data))
{
$index=$key;
unset($Data[$key]);
}
echo $index;
答案 3 :(得分:1)
您可以使用krsort
按键对数组进行排序。
krsort($Data);
$key = array_search('bike', $Data);
echo $key;
答案 4 :(得分:1)
为此,我创建了一个非常容易使用的功能。您只能传递数组和参数。
function text_to_id($value, $arr_master) {
$id_selected = 0;
$search_array = $arr_master;
if (in_array($value, $search_array)) {
$id_selected = array_search($value, $search_array);
// pr($id_selected);exit;
}
if (!$id_selected) {
foreach ($search_array as $f_key => $f_value) {
if (is_array($f_value)) {
if (in_array($value, $f_value)) {
$id_selected = $f_key;
break;
}
} else if ($value == $f_value) {
$id_selected = $f_key;
break;
}
else;
}
}
return $id_selected;
}
这个功能就像这样使用
$variable = text_to_id('bike', $your_array);