2016-04-25 8 views
0

配列$wordsから、配列$indexesのインデックスを持つ単語だけを取得したいと思います。私が持っているもの:2番目の配列のインデックスを持つ配列から値を取得する

public function createNewWordsList($indexes) 
{ 
    $words = $this->wordsArray(); 
    $licznik = 0; 
    $result = array(); 

    foreach($words AS $i => $word) 
    { 
     if($i == $indexes[$licznik]) 
     { 
      $licznik++; 
      $result[] = $word; 
     } 
    } 
    print_r($word); 
} 

しかし、それは動作しません。これをどうすれば解決できますか?

答えて

0

間違った配列を反復処理するようです。あなたがすることができます返される配列に、元のキー(インデックス)を必要としない場合は

public function createNewWordsList(array $indexes) 
{ 
    $words = $this->wordsArray(); 
    $result = array(); 

    // Iterate over the list of keys (indexes) to copy into $result 
    foreach ($indexes as $key) { 
     // Copy the (key, value) into $result only if the key exists in $words 
     if (array_key_exists($key, $words)) { 
      $result[$key] = $words[$key]; 
     } 
    } 

    return $result; 
} 

indexesはあなたが(一緒にそれに関連する値を持つ)$wordsから維持したいキーが含まれている場合、コードは次のようにする必要があります上記のコードを$resultに追加して$result[] = $words[$key];を使用するか、キーを破棄して$resultを返すか、return array_values($result);を使用してください。

0

試してみてください。

public function createNewWordsList($indexes) 
{ 
    $words = $this->wordsArray(); 
    $licznik = 0; 
    $result = array(); 

    foreach($words AS $i => $word) 
    { 
     if(in_array($word,$indexes)) //check using in_array 
     { 
      $licznik++; 
      $result[] = $word; 
     } 
    } 
    print_r($word); 
} 
+0

これは、OPが要求しているようなインデックスではない配列からの値をチェックします。 – Daan