从第二个数组中获取索引的数组中获取值

时间:2016-04-25 10:46:28

标签: php arrays

从名为$words的数组中,我只想获得那些从数组$indexes获得索引的单词。我得到的全部:

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

但它不起作用。我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

似乎你在错误的数组上进行迭代。如果indexes包含您要保留的密钥$words(及其关联值),则代码应如下:

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

如果您不需要原始密钥(索引)到返回的数组中,您可以通过使用$result将值添加到$result[] = $words[$key];或在返回{$result之前丢弃密钥来更改上面的代码1}}使用return array_values($result);