Php 如何在值字符串中添加逗号

Php 如何在值字符串中添加逗号,php,Php,我有一个数组,我试图连接这个数组的一些值。目前,$all看起来像:“AmazonSonySmashwordsBN”(见下面的代码) 我如何让它看起来像:“亚马逊、索尼、Smashwords、BN” 我知道如何连接。我的问题是,如果$bookcategory字符串之一为空,我不需要逗号 $book = array("18"=>'BN', "19"=>'Amazon', "20"=>'Sony', "21"=>'Kobo', "22"=>'Smashwords', "2

我有一个数组,我试图连接这个数组的一些值。目前,
$all
看起来像:“AmazonSonySmashwordsBN”(见下面的代码)

我如何让它看起来像:“亚马逊、索尼、Smashwords、BN”

我知道如何连接。我的问题是,如果$bookcategory字符串之一为空,我不需要逗号

$book = array("18"=>'BN', "19"=>'Amazon', "20"=>'Sony', "21"=>'Kobo', "22"=>'Smashwords', "23"=>'Apple', "24"=>'Android');

$bookcategory1 = $book[$catagory1];
$bookcategory2 = $book[$catagory2];
$bookcategory3 = $book[$catagory3];
$bookcategory4 = $book[$catagory4];


$all = $bookcategory1 . $bookcategory2 . $bookcategory3 . $bookcategory4; 

echo $all;

谢谢

有两种方法:

$all = "$bookcategory1, $bookcategory2, $bookcategory3, $bookcategory4"; 
双引号允许处理变量,而不仅仅是回显变量名

您可以使用:

$str = implode(', ', array_values($book));
//=> BN, Amazon, Sony, Kobo, Smashwords, Apple, Android

您可以通过以下方式加入阵列:

如果只想显示数组中的某些元素(这里似乎只显示4个类别),请将数组减少到4个元素(或使用这些值创建一个新的元素),然后使用内爆

$all = $bookcategory1 . $bookcategory2 . $bookcategory3 . $bookcategory4; 
应该是:

$all = $bookcategory1 . ", " . $bookcategory2 . ", " . $bookcategory3 . ", " . $bookcategory4; 

可以这样做,这将格式化所有你想要的

$all = $bookcategory1 . ", " . $bookcategory2 . ", " . $bookcategory3 . ", "  $bookcategory4; 
你可以用$a。"," . $但是这里有一个更好的方法。。。它的工作原理非常类似于在shell脚本中使用变量:

    $a = "this";
    $b = "that";
    $c = "other thing";
    echo "${a},${b},${c}\n";
输出为:

这个,那个,其他的东西


如果要避免在数组值为空时使用额外的逗号,例如,以下数组:

$book = array("18" => '',
              "19" => 'Amazon',
              "20" => 'Sony',
              "21" => 'Kobo',
              "22" => 'Smashwords',
              "23" => 'Apple',
              "24" => 'Android'
             );
$book[0]的正常连接。", " . $书(1)…<代码> >或代码>内嵌(“,”,$书)< /代码>输出将从一个额外逗号开始(<代码>,Amazon,索尼< /代码>),因为它也添加了空白值。若要跳过空白,则需要筛选值:

$all = implode(", ",array_filter($book));

echo $all;
  // Amazon, Sony, Kobo, Smashwords, Apple, Android

$bookcategory1.','.$bookcategory2
对您来说不够好吗?首先,您必须将
$all
分解成一个数组,然后将数组的元素与
join()
组合在一起。困难的部分是拆分
$all
,因为您没有说明拆分规则。因此,您似乎了解使用
进行串联,并且似乎了解如何在引号内创建字符串。您不需要做出逻辑上的飞跃来找出如何将变量值与字符串值连接起来?始终首选内爆+1逗号后面也可以加空格,所以要多一点readable@aynber好吧,好吧,细节。。。你有点固执,不是吗这取决于我的心情。LOL:-D这就像Maxime Lorant的答案一样,但是对于初学者来说,由于缺乏足够的知识,这会让人更加困惑echo@abstr:唯一的区别是我以前发布过(尽管我很高兴其他答案获得了这么多的选票,因为我已经超过了当天的代表人数限制)。是的。我知道如何连接。我的问题是,如果$bookcategory字符串之一为空,我不需要逗号。
$book = array("18" => '',
              "19" => 'Amazon',
              "20" => 'Sony',
              "21" => 'Kobo',
              "22" => 'Smashwords',
              "23" => 'Apple',
              "24" => 'Android'
             );
$all = implode(", ",array_filter($book));

echo $all;
  // Amazon, Sony, Kobo, Smashwords, Apple, Android