2017-03-23 14 views
0

インデックスを見つけるには、展開した後に次の配列の文字列を見つける必要があります。したがって、この例では、「本当に」のインデックスを見つける必要があります。これどうやってするの?2次元配列の文字列のインデックスを検索するには

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

あなたは、配列内の文字列を探しているので

+0

[PHP多次元配列の検索(特定の値でキーを見つける)](http://stackoverflow.com/questions/8102221/php-multidimensional-array-特定の値による検索 - 検索キー)。 –

答えて

1

array_searchが動作しません:(何をしようとしたが返されますの配列です。外側のarをループする必要がありますその配列内にそれぞれ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; 
    } 
} 

このような構造で、検索文字列がどこにあるかを示す2つのインデックス、外側の配列に1つ、内側のアレイのための1があるので、私は、あなたが探しているどのインデックスわからないんだけど。しかし、$searchの後にループを壊した場合は、$keyがその時点で外側の配列の正しいインデックスになります。したがって、それらの両方を持つことになります。

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

このコードスニペットは歓迎されていますが、いくつかの助けを与えるかもしれませんが、* how *と* Why *がこれを解決する(説明があれば大きく改善されます)(// meta.stackexchange.com/q/114762)問題。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

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

これは動作するはずです。それを試してみませんでしたが、それは...

関連する問題