在php中尝试使用字符串匹配获取数组值时,将创建两个数组

在php中尝试使用字符串匹配获取数组值时,将创建两个数组,php,arrays,Php,Arrays,在下面的代码中,我创建了一个数组,其中包含与某些特定字符串模式匹配的值。在这个数组中,我试图只获取包含POST关键字的数组的值,并将其保存在另一个数组中。它应该返回1个大小为2的数组。但是,当我尝试这样做时,它会导致创建两个数组。一个大小为1的数组和另一个大小为2的数组。但是,我只需要一个数组。有人能告诉我哪里错了吗 每次通过循环都会创建一个新数组,而不是添加到数组中 $val = array(); foreach ($array as $index) { if (strpos($ind

在下面的代码中,我创建了一个数组,其中包含与某些特定字符串模式匹配的值。在这个数组中,我试图只获取包含POST关键字的数组的值,并将其保存在另一个数组中。它应该返回1个大小为2的数组。但是,当我尝试这样做时,它会导致创建两个数组。一个大小为1的数组和另一个大小为2的数组。但是,我只需要一个数组。有人能告诉我哪里错了吗


每次通过循环都会创建一个新数组,而不是添加到数组中

$val = array();
foreach ($array as $index) {
    if (strpos($index, $keyword) !== false) {
        $val[] = $index;
    }
}
var_dump($val);
您还可以使用数组过滤器:

也可以在从文件读取的循环中执行此操作,而不是单独的循环

while ($line = fgets($fh)) {
 if($started) {
    $temp .= $line;
    if(strpos($line, "--") === 0 && strpos($line, "-Z-") > 0) {
      $started = false;
      $array[] = $temp;
      if (strpos($temp, $keyword) !== false) {
        $val[] = $temp;
      }
    }
  }
  if(strpos($line, "--") === 0 && strpos($line, "-A-") > 0) {
    $started = true;
    $temp = $line;
  }
}

您好,您可以发布输出是什么吗?我不知道在这段代码中您是如何得到大小为2的数组的。你确定你复制的正确吗?为什么你要编辑我的答案?如果你需要澄清,你应该编辑问题,而不是答案。
$val = array_filter($array, function($index) use ($keyword) {
    return strpos($index, $keyword) !== false;
});
while ($line = fgets($fh)) {
 if($started) {
    $temp .= $line;
    if(strpos($line, "--") === 0 && strpos($line, "-Z-") > 0) {
      $started = false;
      $array[] = $temp;
      if (strpos($temp, $keyword) !== false) {
        $val[] = $temp;
      }
    }
  }
  if(strpos($line, "--") === 0 && strpos($line, "-A-") > 0) {
    $started = true;
    $temp = $line;
  }
}