2015-10-16 27 views
1

我有這樣爆炸數組值只有在包含特定符號

Array 
(
    [keywords] => Array 
     (
      [1] => Hazmat - Fuel/Oil/Gas 
      [2] => Marine Life Incident 
      [3] => Bird - Avian Incident 
      [4] => Missing Child/Child Abduction 
     ) 
) 

陣列我想爆炸只有那些關鍵字是包含「-」和他們在新的數組與其餘關鍵字存儲。

像這樣

Array 
    (
     [newkeywords] => Array 
      (
       [1] => Hazmat 
       [2] => Fuel/Oil/Gas 
       [3] => Bird 
       [4] => Avian Incident 
       [5] => Marine Life Incident 
       [6] => Missing Child/Child Abduction 

      ) 
    ) 

任何想法,我怎麼能檢查每一個陣列值,它是包含儀表板和爆炸他們。 在此先感謝。

+3

[你嘗試過什麼?](http://mattgemmell.com/what-have-you-tried/) – Epodax

+1

這是很基本的根本PHP,如果有解PHP手冊正確讀取。 –

回答

2

使用此代碼如下...

 $keywords= array("Hazmat - Fuel/Oil/Gas","Marine Life Incident","Bird - Avian Incident"); 
      foreach($keywords as $keyword){ 
       $isTwoArr= explode("-", $keyword); 
       if(count($isTwoArr)>1){ 
        foreach($isTwoArr as $oneArr) 
         $newArr[]=$oneArr; 
       } 
       else{ 
        $newArr[]=$keyword; 
       } 
      } 
print_r($newArr); 
3

首先,聲明新的數組。 接下來,編寫一個循環來檢查現有數組中的每個元素。 在循環中有一個if語句,使用strpos()來查找數組中每個元素中' - '的位置。 如果找到' - ',則使用array_push($newarray, $newValues)發送到新陣列。 否則將整個值推送到新數組。

這是一些模擬代碼。這給你一個你正在尋找的代碼結構的想法。

<?php 
$keywords = array(
    [1] => Hazmat - Fuel/Oil/Gas 
    [2] => Marine Life Incident 
    [3] => Bird - Avian Incident 
    [4] => Missing Child/Child Abduction 
); 

$newkeywords = []; 

for ($i=0; $i<sizeof($kewords); $i++) { 
    if (strpos($keywords[i+1], "-") === true) { 
     //split the string in two and push to new array 
     //explode() creates a new array 
     $keywordChunks = explode("-", $keywords[i]); 
     array_push($newkeywords, $keywordChunks[0]; 
     array_push($newkeywords, $keywordChunks[1]); 
    } else { 
     //push the entire word to the new array 
     array_push($newkeywords, $keywords[i]); 
    } 
} 
?>