2015-02-06 45 views
0

我有这样PHP获得该数组中的值作为类似格式

Array 
(
    [0] => T-shirts 
    [1] => Evening Dresses 
    [2] => Dresses 
    [3] => Clothes 
) 

在这里,我想要得到的数组的值,并添加“”每个值,并增加一个阵列,每个值 后因此,衣被合计应该终于来了这样

IN("T-shirts","Evening Dresses","Dresses","Clothes") 

所以为了这个,我做了我这样的代码

$category_pool = ''; 
foreach($categoryArray as $categoryArr) 
    $category_pool .= $categoryArr.','; 
    $category_pool = ((strpos($category_pool, ',') === false) ? (' = '.$category_pool.' ') : (' IN ("'.rtrim($category_pool, ',').'") ')); 

,但在这里它是越来越值一样

IN ("T-shirts,Evening Dresses,Dresses,Clothes") 

所以有人可以告诉我如何使这个值来像

IN("T-shirts","Evening Dresses","Dresses","Clothes") 

任何帮助和建议将是非常可观的。由于

回答

1

快速的解决方案是:

改变您的片段:

$category_pool = ''; 
foreach($categoryArray as $categoryArr) 
    $category_pool .= $categoryArr.','; 
    $category_pool = ((strpos($category_pool, ',') === false) ? (' = '.$category_pool.' ') : (' IN ("'.rtrim($category_pool, ',').'") ')); 

一个我行:

$category_pool = 'IN ("' . implode('","',$categoryArray).'")'; 
+0

所以我没有使用'$ category_pool。 = $ categoryArr。',';' – NewUser 2015-02-06 03:24:12

+0

我不知道什么是'$ category_pool'代表:-) – Alex 2015-02-06 03:25:32

+0

我用你的代码,但它的显示它的显示implode():传递的参数无效 代码是这样的 $ category_pool =((strpos($ category_pool,',')=== false)? ('='。$ category_pool。''):('IN(“'。implode('','',$ category_pool)。'”)')); – NewUser 2015-02-06 03:29:46

1
'IN(' 
. implode(
    ',', 
    array_map(function ($val) { 
     return sprintf('"%s"', $val); 
    }, $categoryArray) 
) 
. ')';