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 但如何?

4

5 回答 5

4

array_filter()

$new = array_filter(
    $puctures,
    function($a) {return substr($a, 0, 2) == '1_'; }
);
于 2013-10-11T08:48:11.923 回答
3

使用array_filter()获取您的数组:

$new = array_filter($puctures, function($item)
{
   //here strpos() may be a better option:
   return preg_match('/^1_/', $item);
});
于 2013-10-11T08:46:50.870 回答
3

一个简单的循环就可以了。

foreach ($pictures as $picture) {
    if (substr($picture, 0, 2) == "1_") {
        $new[] = $picture;
    }
}
于 2013-10-11T08:47:00.823 回答
2

这个例子使用array_push()&strpos()

$FirstPictures = array();
foreach( $pictures as $pic => $value ) { 
   if ( strpos( $value, '1_' ) !== 0 ) {
      array_push( $FirstPictures, $pic );
   }
}
于 2013-10-11T08:46:55.970 回答
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); 
于 2013-10-11T08:54:14.173 回答