Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组-将一些逗号分隔的元素分解为新项_Php_Arrays_Parsing - Fatal编程技术网

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

PHP数组-将一些逗号分隔的元素分解为新项,php,arrays,parsing,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

如何获取包含单个字符串但也包含逗号分隔字符串的数组,并将逗号分隔的项分解为单个项?例如:

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_数组返回:

item 1: "10003"
item 2: "10016"
item 3: "10008"
item 4: "10007"
item 5: "10010"
这里有一个快速解决方案:)如果有逗号,它将在将其添加到数组中之前将其分解

  • 正如其他人注意到的那样,myslq_uu函数已被弃用。。最好改用mysqli或PDO:)
这里有一个快速解决方案:)如果有逗号,它将在将其添加到数组中之前将其分解

  • 正如其他人注意到的那样,myslq_uu函数已被弃用。。最好改用mysqli或PDO:)
您可以在php中使用
explode()
函数,并将返回数组合并到
$product\u数组中。像这样的事情:

$product_array = array_merge(explode(',', $commaSeperatedArray), $product_array); 
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'];
  } 
}
您可以在php中使用
explode()
函数,并将返回数组合并到
$product\u数组中。像这样的事情:

$product_array = array_merge(explode(',', $commaSeperatedArray), $product_array); 
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'];
  } 
}

未经测试,但在这里

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))
}

你得到了这个想法…

未经测试,但它来了

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))
}
你明白了…

根据给定的分隔符分解字符串,结果是一个数组。值得一提的是:如果字符串中没有一个分隔符,它仍然会转换为类似
数组([0]=>abc)
的数组。这意味着您甚至不需要将项目1和项目2强制转换为数组,就可以使
array\u merge()
正常工作

:

将多个数组合并到一个新的数组中

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

根据给定的分隔符分解字符串,结果是一个数组。值得一提的是:如果字符串中没有一个分隔符,它仍然会转换为类似
数组([0]=>abc)
的数组。这意味着您甚至不需要将项目1和项目2强制转换为数组,就可以使
array\u merge()
正常工作

:

将多个数组合并到一个新的数组中

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

使用
preg_split()
而不是
explode()
。 可以在函数中添加任意数量的分隔符

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

使用
preg\u split()
而不是
explode()
。 可以在函数中添加任意数量的分隔符

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

您可以这样尝试:

$product_array = array_merge(explode(',', $commaSeperatedArray), $product_array); 
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'];
  } 
}
您可以这样尝试:

$product_array = array_merge(explode(',', $commaSeperatedArray), $product_array); 
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'];
  } 
}

. 它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。为什么不在php中使用explode函数?@SaVaFa是的,我知道我必须使用
explode
。但是我不知道如何实现它,因为
explode
不会返回另一个数组吗?我会简单地迭代分解的数组并将
推送到原始数组吗?我想有一个更优雅的解决方案?。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。为什么不在php中使用explode函数?@SaVaFa是的,我知道我必须使用
explode
。但是我不知道如何实现它,因为
explode
不会返回另一个数组吗?我会简单地迭代分解的数组并将
推送到原始数组吗?我想有一个更优雅的解决方案?为什么要使用
preg\u split()
?没有一项要求提到OP需要在多个分隔符上拆分。@Aquillo,preg_split()有什么问题?它确实会返回OP所需的相同答案,这比在执行两个操作时合并和分解数组的速度要快得多。您正在添加“10003”“10016”(将成为“1000310016”),这意味着没有分隔符可以拆分?此代码无效。您可能希望在
$row['product']
之前添加空格,因为这仍然会导致我前面提到的问题。除此之外,还有一个很好的解决方案。为什么要使用
preg_split()
?没有一项要求提到OP需要在多个分隔符上拆分。@Aquillo,preg_split()有什么问题?它确实会返回OP所需的相同答案,这比在执行两个操作时合并和分解数组的速度要快得多。您正在添加“10003”“10016”(将成为“1000310016”),这意味着没有分隔符可以拆分?此代码无效。您可能希望在
$row['product']
之前添加空格,因为这仍然会导致我前面提到的问题。除此之外,这是一个很好的解决方案。这是一个只使用代码的答案,不采用最佳实践。请参阅使用strstr()检查子字符串是否存在的状态是无效的。如其他答案所示,根本不需要任何条件;这意味着由于不必要的迭代函数调用而导致第二次效率损失。这是一个只使用代码的答案,不采用最佳实践。请参阅使用strstr()检查子字符串是否存在的状态是无效的。如其他答案所示,根本不需要任何条件;这意味着由于不必要的迭代函数调用而导致第二次效率损失。