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:)
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()检查子字符串是否存在的状态是无效的。如其他答案所示,根本不需要任何条件;这意味着由于不必要的迭代函数调用而导致第二次效率损失。