PHP数组 - 将一些逗号分隔的元素分解为新项

时间:2013-05-10 06:03:18

标签: php arrays parsing

如何使用单个字符串以及逗号分隔的字符串获取数组并将逗号分隔的项目分解为单个项目?例如:

while(($row =  mysql_fetch_array($downloads_query))) {
        $product_array[] = $row['product']; 
    }

$product_array[]返回:

item 1: "10003"
item 2: "10016"
item 3: "10008, 10007, 10010"

如何将第3项拆分为单独的第3,4和5项,以便$ product_array返回:

item 1: "10003"
item 2: "10016"
item 3: "10008"
item 4: "10007"
item 5: "10010"

7 个答案:

答案 0 :(得分:5)

explode() - PHP.net

根据给定的分隔符分解字符串,结果是一个数组。值得一提的是:如果你的字符串中没有一个分隔符,它仍然会转换为像Array ( [0] => abc )这样的数组。这意味着您甚至不需要将项目1和2转换为数组,以便array_merge()能够正常运行。

array_merge() - PHP.net

将多个数组合并为 new 数组。

$items = new array();
while(($row =  mysql_fetch_array($downloads_query))) {
    $items = array_merge($items, explode(',', $item3));
}

答案 1 :(得分:1)

while(($row =  mysql_fetch_array($downloads_query))) {
        if(strpos($row['product'],',') > -1){
                $product_array += explode(',',$row['product']);
        } else {
                $product_array[] = $row['product']; 
        }
    }

这是快速解决方案:)如果有逗号,它会在将其添加到您的数组之前将其爆炸。

  • 正如其他人注意到myslq_函数已被弃用..更好地使用mysqli或PDO:)

答案 2 :(得分:1)

您可以尝试这样:

while(($row = mysql_fetch_array($downloads_query))) {
  if(strstr($row['product'], ',')) {
    $product_array = array_merge(explode(',',$row['product']), $product_array);
  } else {
   $product_array[] = $row['product'];
  } 
}

答案 3 :(得分:0)

您可以在php中使用explode()函数并将返回数组合并到$product_array中。像这样的事情:

$product_array = array_merge(explode(',', $commaSeperatedArray), $product_array); 

答案 4 :(得分:-1)

未经测试,但现在就开始了。

function process_array($row)
{
    $result=array();
    $product=$row['product'];

    if(strpos($product, ',')!==false)
    {
        $result[]=explode(',', $product);
    }
    else
    {
        $result[]=$product;
    }

    return $result;
}

/////

$product_array=array();

while(($row =  mysql_fetch_array($downloads_query))) 
{
    $product_array=array_merge($product_array, proccess_array($row))
}

你明白了......

答案 5 :(得分:-1)

使用preg_split()代替explode()。 您可以在函数中添加任意数量的分隔符。

<?php
while(($row =  mysql_fetch_array($downloads_query))) {
        $string .= $row['product']." "; 
    }
    $product_array = preg_split( "/[;, ]/", $string);
?>

答案 6 :(得分:-1)

$format_Arr = array("test1","test2,test2.1","test3","test4,test5,test6,test7");
$formated_arr = array();
foreach($format_Arr as $arr){
$arr1 = explode(",",$arr);
if(count($arr1)>1){
    $formated_arr = array_merge($formated_arr,explode(',',$arr));
}else{
    $formated_arr[]= $arr;
}
}
print_r($formated_arr);