如何在二维数组中搜索字符串的索引

时间:2017-03-23 14:35:20

标签: php arrays string search indexing

我需要在爆炸后在下面的数组中找到索引的字符串。所以在这个例子中我需要找到“真正”的索引。我怎么能这样做?

function explode2D($row_delim, $col_delim, $str) {
        return array_map(function ($line) use ($col_delim) {
            return explode($col_delim, $line);
        }, explode($row_delim, $str));
    } // - slick coding by trincot


$string = 'red<~>blue<~>orange[|]yellow<~>purple<~>green[|]really<~>dark<~>brown';

$array = explode2D("[|]", "<~>", $string);

返回

Array
(
    [0] => Array
        (
            [0] => red
            [1] => blue
            [2] => orange
        )

    [1] => Array
        (
            [0] => yellow
            [1] => purple
            [2] => green
        )

    [2] => Array
        (
            [0] => really
            [1] => dark
            [2] => brown
        )

)

所以我试过这个

$search = 'really';

$index = array_search($search, $array);

print($index);
没什么:(

3 个答案:

答案 0 :(得分:1)

array_search无效,因为您在数组数组中查找字符串。您需要遍历外部数组并在该数组内的每个集合array_search

foreach ($array as $key => $set) {
    $index = array_search($search, $set);
    if (false !== $index) {
        echo "Found '$search' at index $index of set $key";
        break;
    }
}

我不确定你正在寻找哪个索引,因为有这样的结构,有两个索引指示你的搜索字符串在哪里,一个用于外部数组,一个用于内部数组。但是如果在找到$search之后中断循环,那么$key将是该点外部数组的正确索引,因此您将拥有它们。

答案 1 :(得分:0)

for ($i = 0; $i < count($array); $i++) {
    if (($key = array_search($search, $array[$i])) !== false) {
        var_dump(array($i, $key));
    }
}

答案 2 :(得分:0)

尝试:

$search = 'really';

$index = -1;
$location = [];

foreach($i = 0; $i < sizeof($array); $i++){
    for($j = 0; $j < sizeof($array[$i]); $j++){
        if($search == $array[$i][$j]){
            $location = [$i, $j];
            $index++;
            break;
        } else {
            $index++;
        }
    } 
}

print_r($location); // This gives you the position where the match is found i.e. [2, 0];
echo $index; // This is the direct index of the search result i.e. 6

print($index);

这应该有效。没有尝试过,但它应该......