从具有preg_match返回条件的数组创建一个新数组

时间:2013-12-12 19:40:12

标签: php arrays foreach preg-match

我想从数组中创建一个只有preg_match true case的新数组。从我的数组开始,我想创建一个包含字符串“banner”的新数组,并将其分配给新的$ banner = array(),这个是我的数组($ main_array)

[banner_title1] => title1
[banner_img1] => banner1.png
[banner_desc1] => bannerdesc1
[banner_link1] => http:/ab.com
[banner_title2] => title2
[banner_img2] => banner2.png.png
[banner_desc2] => sliderdesc
[banner_link2] => http://google.com
[portfolio_link1] => http://test.com
[portfolio_img1] => portfolio1.png
[portfolio_link2] => http://bb.dk
[portfolio_img2] => abc.png

从上面的数组

 foreach($main_array as $key=>$val){
 if(preg_match('/banner/', $key) )
 {
echo $key."br />";
 }
 }

通过这个我可以得到结果只有包含“横幅”的键。但我想要一个像这样的新阵列。

 $banner_array= array (
"banner_title"  => array("banner_title1" => "title1", "banner_title2" => "title2"),
"banner_img" => array("banner_img1" => "banner1.png", "banner_img2" => "banner2.png"),
"banner_link"   => array("banner_link1"=>"http://banner1.com, "banner_link2 =>"banner2.com")

);等等。

提前致谢

2 个答案:

答案 0 :(得分:2)

执行此操作

foreach($main_array as $key=>$val){
    if(preg_match('/banner/', $key) )
    {
     $resultArray[$key]=$val;
    }
 }

答案 1 :(得分:0)

怎么样:

foreach($main_array as $key => $val) {
    if(preg_match('/((banner_[a-z]+)\d+)/', $key, $m) ) {
        $banner_array[$m[2]][$m[1]] = $val;
    }
}
print_r($banner_array);