内爆()数组并在两个元素后生成新行


Implode() array and make new line after two elements

我正在寻找echo逗号分隔的数组元素,例如:

Element1, Element2, Element3, Element4, Element5, Element6

但是,为了保持回显元素的整洁,我可能需要在每行的第二个元素之后转到一个新行,例如

Element1, Element2,
Element3, Element4,
Element5, Element6

正如我正在做的:

<?php
$labels = Requisitions::getLabelNames($id);
foreach($labels as $label) { 
    $labels_array[] = $label['name'];
    }  
echo implode(' ,', $labels_array); 
?>

显然得到:

Element1, Element2, Element3, Element4, Element5, Element6

那么我如何使用implode()或其他方式在一行的每个第二个元素之后做换行?

<?php
$labels = array('Element1', 'Element2', 'Element3', 'Element4', 'Element5', 'Element6');
# Put them into pairs
$pairs_array = array_chunk($labels, 2);
# Use array_map with custom function
function joinTwoStrings($one_pair) {
  return $one_pair[0] . ', ' . $one_pair[1];
}
$pairs_array = array_map('joinTwoStrings', $pairs_array);
echo implode(',' . PHP_EOL, $pairs_array);

您可以使用foreach来实现它,我将为您粘贴代码,这将为您提供所需的输出

<?php
$labels = array("Element1", "Element2", "Element3", "Element4", "Element5","Element6");
$key = 1;
$lastkey = sizeof($labels);
foreach($labels as $value)
{
  if($key%2)
  {
    if($key==$lastkey)
    {
      echo $value;
    }
    else
    {
      echo $value.",</br>";
    }
  }
  else
  {
     if($key==$lastkey)
     {
        echo $value."</br>";
     }
     else
     {
        echo $value.",</br>";
     }
  }
  $key++;
}
?>

未经测试,但这样的东西应该可以工作

$i = 1;
foreach($labels as $label) {
   echo $label;
   // add a comma if the label is not the last
   if($i < count($labels)) {
      echo ", ";
   }
   // $i%2 is 0 when $i is even
   if($i%2==0) {
       echo "<br>"; // or echo "'n";
   }    
   $i++;
}

为了美观:

$labels_array=array("Element 1","Element 2","Element 3","Element 4","Element 5","Element 6");
echo implode(",'n",array_map(function($i){ // change to ",<br />" for HTML output
    return implode(", ",$i);
},array_chunk($labels_array,2)));

在线演示

<?php
$labels = Requisitions::getLabelNames($id);
foreach($labels as $label) { 
    $labels_array[] = $label['name'];
    }
for($i=0;$i<count($labels_array);$i++)
{ echo($labels_array[$i]);
  if($i % 2 != 0)
  {
     echo("'n");
  }else{echo(",");}
}
?>
$i = 1;
$str = '';
foreach($labels AS $label)
{
    $str += "$label, ";
    if ($i % 2 == 0)
    {
        $str += "'n";
    }
    $i++;
}
//Remove last 2 chars
$str = substr($str,0,(strlen($str)-2));

除非您需要数组用于其他用途,否则这只是构建字符串…

<?php
$labels = Requisitions::getLabelNames($id);
$s='';
$i=0;
$l=count($labels);
foreach($labels as $label){
    $s.=$label['name'];
    // Append delimeter. Makes sure every second, and the last one, will be a line break
    $s.=((++$i%2)&&($l!=$i))?' ,':"'n";  
}
echo $s;
?>