函数将变量中的逗号分隔值作为单个字符串

时间:2014-04-14 09:48:50

标签: php mysql sql magento

我试图过滤产品magento ce 1.7中的某些产品。即时提取我想要从多维数组中过滤的值

foreach ($artist_productIds as $artist_productID){
    $artist_product_id[] = $artist_productID['mageproductid'];
}
$artist_prodIdString = implode(',',$artist_product_id); 

并将其传递给magento查询

$categoryproducts = Mage::getModel('catalog/category')->load($currentArtCat)
 ->getProductCollection()
 ->addAttributeToSelect('*') // add all attributes - optional
 ->addFieldToFilter('status', array('neq' => 2))
 ->addAttributeToFilter('entity_id', array('nin' => array($artist_prodIdString)));

在调试时我知道它将值传递为

array('47,48,49,112,113,114,115,116')

它应该像

一样传递
array(47,48,49,112,113,114,115,116)

我应该怎么解决它!

1 个答案:

答案 0 :(得分:1)

为什么你要将一个数组插入字符串然后传递它

$artist_prodIdString = implode(',',$artist_product_id); 

然后使用

array('nin' => array($artist_prodIdString));

您可以直接将数组作为

传递
 array('nin' => $artist_product_id);
你在foreach中生成的

如果您的$ artist_product_id不是正确的数组

之后
$artist_prodIdString = implode(',',$artist_product_id); 

使用explode()将其设为数组并将其传递给函数。

你正在尝试做某事

$str = '47,48,49,112,113,114,115,116' ;
$array = array($str);
print_r($array);
output Array
(
    [0] => 47,48,49,112,113,114,115,116
)

在你的情况下也是如此,所有数字都是针对数组键0