我有像这样的数组
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
)
)
任何想法如何检查包含破折号的每个数组值并将其爆炸。 提前致谢。
答案 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);