2016-04-25 8 views
0

Aus dem Array mit dem Namen $words möchte ich nur die Wörter erhalten, die Indizes vom Array $indexes erhalten haben. Alles, was ich habe:Abrufen von Werten aus dem Array, das Indizes im zweiten Array hat

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

aber es funktioniert nicht. Wie kann ich das lösen?

Antwort

0

Es scheint, dass Sie über die falsche Array iterieren. Wenn indexes die Schlüssel enthält, die Sie von $words (zusammen mit ihren zugehörigen Werte) halten wollen, dann sollten Sie den Code wie:

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

Wenn Sie nicht die Original-Schlüssel benötigen (Indizes) in das zurückgegebene Array können Sie Ändern Sie den obigen Code, indem Sie entweder die Werte in $result mit $result[] = $words[$key]; hinzufügen oder die Schlüssel vor der Rückgabe $result mit return array_values($result); verwerfen.

0

Versuchen:

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

Dies überprüft Werte von Arrays nicht Indizes wie OP anfordert. – Daan

Verwandte Themen