从指定的字符串创建新的数组?

3
我有这样一个简单的数组:
$puctures=array('1_noname.jpg','2_new.jpg','1_ok.jpg','3_lets.jpg','1_stack.jpg','1_predlog.jpg','3_loli.jpg');

我想创建一个新的数组,其中只包含以1_开头的元素。

$new=array('1_noname.jpg','1_ok.jpg','1_stack.jpg','1_predlog.jpg');

类似于array_pop但是怎么做?
5个回答

4

参考array_filter()函数:

$new = array_filter(
    $puctures,
    function($a) {return substr($a, 0, 2) == '1_'; }
);

我知道我应该使用 array_filter。只是在回答问题时想不起来了。 - Ian Brindley
+1 可能是最直接和最简单的答案了 =) - MackieeE

3
使用array_filter()函数获取数组:
$new = array_filter($puctures, function($item)
{
   //here strpos() may be a better option:
   return preg_match('/^1_/', $item);
});

2
preg_match 更好。编译后的正则表达式被缓存。strpos 遍历整个 $item 才确定找到的位置不等于 0。 - Oswald

3
一个简单的循环就可以完成。
foreach ($pictures as $picture) {
    if (substr($picture, 0, 2) == "1_") {
        $new[] = $picture;
    }
}

2

这个例子使用了 array_push()strpos() 函数。

$FirstPictures = array();
foreach( $pictures as $pic => $value ) { 
   if ( strpos( $value, '1_' ) !== 0 ) {
      array_push( $FirstPictures, $pic );
   }
}

0
$puctures=array('1_noname.jpg','2_new.jpg','1_ok.jpg','3_lets.jpg','1_stack.jpg','1_predlog.jpg','3_loli.jpg');
  $new=array();
  foreach($puctures as $value)
   {
   if(strchr($value,'1'))
   $new[]=$value;
   }
   echo "<pre>";  print_r($new); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接