假设我有以下代码:
$array = array("john" => "doe", "foe" => "bar", "oh" => "yeah");
foreach($array as $i=>$k)
{
echo $i.'-'.$k.',';
}
回声"john-doe,foe-bar,oh-yeah,"
如何去掉最后的逗号?
你也可以使用rtrim
函数来实现:
$result = '';
foreach($array as $i=>$k) {
$result .= $i.'-'.$k.',';
}
$result = rtrim($result,',');
echo $result;
我不喜欢之前的所有食谱。
Php不是C语言,它有更高级的方法来处理这个特定的问题。
我将从你拥有这样一个数组的点开始:
$array = array('john-doe', 'foe-bar', 'oh-yeah');
你可以使用循环或者array_map()函数来从初始数组构建出这样的一个数组。请注意,我在使用单引号字符串。如果你没有需要替换的变量名,这是一种微小的优化。
现在你需要从这个数组生成一个CSV字符串,可以像这样完成:
echo implode(',', $array);
array_map
函数,感谢captaintokyo。@Powertieke,它确实循环,因为array_map()
必须在数据上进行循环。我认为OP发布的数组只是他从其他地方获取的数据的演示。 - Jim一种方法是使用substr
函数。
$array = array("john" => "doe", "foe" => "bar", "oh" => "yeah");
$output = "";
foreach($array as $i=>$k)
{
$output .= $i.'-'.$k.',';
}
$output = substr($output, 0, -1);
echo $output;
implode
函数。$array = array("john" => "doe", "foe" => "bar", "oh" => "yeah");
$output = array();
foreach($array as $i=>$k)
{
$output[] = $i.'-'.$k;
}
echo implode(',', $output);
我不喜欢使用 substr 的想法,因为这是不好的编程风格。这个想法是将所有元素连接起来,并用特殊的“分隔”短语分隔它们。调用子字符串的想法就像使用激光来射击鸟。
在我目前处理的项目中,我们试图摆脱编码中的坏习惯。而这个示例被认为是其中之一。我们强制程序员编写这样的代码:
$first = true;
$result = "";
foreach ($array as $i => $k) {
if (!$first) $result .= ",";
$first = false;
$result .= $i.'-'.$k;
}
echo $result;
$result = '';
foreach($array as $i=>$k) {
if(strlen($result) > 0) {
$result .= ","
}
$result .= $i.'-'.$k;
}
echo $result;
假设该数组是一个索引,在我这里可以运行。我循环 $i 并将其与 $key 进行比较。当键结束时,逗号不会打印出来。注意 IF 有两个值,以确保第一个值在开头没有逗号。
foreach($array as $key => $value)
{
$w = $key;
//echo "<br>w: ".$w."<br>";// test text
//echo "x: ".$x."<br>";// test text
if($w == $x && $w != 0 )
{
echo ", ";
}
echo $value;
$x++;
}
$result1=substr($i, 0, -1);
看这个例子,你就能轻松理解了
$name = ["sumon","karim","akash"];
foreach($name as $key =>$value){
echo $value;
if($key<count($name){
echo ",";
}
}
$foods = [
'vegetables' => 'brinjal',
'fruits' => 'orange',
'drinks' => 'water'
];
$separateKeys = array_keys($foods);
$countedKeys = count($separateKeys);
for ($i = 0; $i < $countedKeys; $i++) {
if ($i == $countedKeys - 1) {
echo $foods[$separateKeys[$i]] . "";
} else {
echo $foods[$separateKeys[$i]] . ", \n";
}
}
这里$foods
是我的示例关联数组。
我分离了数组的键来计算键的数量。
然后通过for循环,如果不是最后一个元素,则打印逗号,并通过$countedKeys-1
删除逗号。
我通过使用数组的最后一个键从最后一个值中删除了逗号。希望这能给你一些想法。
$last_key = end(array_keys($myArray));
foreach ($myArray as $key => $value ) {
$product_cateogry_details="SELECT * FROM `product_cateogry` WHERE `admin_id`='$admin_id' AND `id` = '$value'";
$product_cateogry_details_query=mysqli_query($con,$product_cateogry_details);
$detail=mysqli_fetch_array($product_cateogry_details_query);
if ($last_key == $key) {
echo $detail['product_cateogry'];
}else{
echo $detail['product_cateogry']." , ";
}
}
ArrayAccess
接口定义的操作之一。在我看来,这些就是数组操作 ;) - NikiC