仅当数组值包含特定符号时才会分解它们

时间:2015-10-16 11:40:17

标签: php arrays

我有像这样的数组

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

            )
    )

任何想法如何检查包含破折号的每个数组值并将其爆炸。 提前致谢。

2 个答案:

答案 0 :(得分: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]);
    }
}
?>

答案 1 :(得分: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);