PHP:查找数组中最后一次出现的字符串

时间:2017-03-29 04:48:29

标签: php arrays search

我需要从数组中找到特定值的最后找到的元素。我在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这是最后一个匹配的元素。

任何建议都表示赞赏。

5 个答案:

答案 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 code demo

<?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;

工作示例:https://3v4l.org/fYOgN

答案 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);