2013-10-11 31 views
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但如何?

回答

3

一个简单的循环就行了。

foreach ($pictures as $picture) { 
    if (substr($picture, 0, 2) == "1_") { 
     $new[] = $picture; 
    } 
} 
3

使用array_filter()让你的数组:

$new = array_filter($puctures, function($item) 
{ 
    //here strpos() may be a better option: 
    return preg_match('/^1_/', $item); 
}); 
+2

'preg_match'更好。编译后的正则表达式被缓存。在确定找到的位置是!= 0之前,'strpos'遍历整个'$ item'。 – Oswald

2

下面的例子使用array_push() & strpos()

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

array_filter()

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

我知道我应该使用'array_filter'。回答时,我只能想不起来。 –

+0

+1可能是最简单最直接的答案=) – MackieeE

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); 
相关问题