从名为$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);
}
但它不起作用。我该如何解决这个问题?
答案 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);
。