在PHP中:如何将一个数组的子集过滤到另一个数组?

sto*_*ist 0 php arrays

foreach ($myarray as $value)
  {
        if (strpos($value,'mysearchstring'))
             //add this $value to new array here
  }
Run Code Online (Sandbox Code Playgroud)

还需要声明第二个数组的位置以及如何?

Yac*_*oby 8

为了避免警告,应该像这样声明第二个数组

$newArray = array();
Run Code Online (Sandbox Code Playgroud)

这可以像这样包含在你的代码中

$newArray = array();
foreach ($myarray as $value){
    if (strpos($value,'mysearchstring') !== false ){
         $newArray[] = $value;
    }
}
Run Code Online (Sandbox Code Playgroud)

您的原始代码包含错误. strpos返回,false如果它不包含针,否则返回事件的索引.因此,strpos($value,'mysearchstring')如果$value以#开头则返回0 'mysearchstring'.由于PHP将转换0false,反之亦然,它不会添加到数组,如果我们使用标准的比较,所以我们需要明确的检查,这是没有类型转换错误(转换0false为例).要做到这一点,我们使用!==(注意两个=)s.这在上面的代码中表示.

有关php中比较运算符的更多信息,请参阅文档.

编辑
关于推荐和使用[],它将新元素广告到数组的末尾

文件指出:

如果没有指定键[在方括号中],则采用现有整数索引的最大值,新键将是该最大值加1.如果还没有整数索引,则键将为0(零).

所以,如果我们有一个数组

$arr = array(5 => 1, 12 => 2);

//doing this
$arr[] = 56;

//is exactly the same as doing
$arr[13] = 56

//As the maximum integer key is 12, so the new key is 13
Run Code Online (Sandbox Code Playgroud)