Implode () масіў і зрабіць новы радок пасля двух элементаў

Я шукаю рэха праз коску элементаў масіва напрыклад:

<�Код> 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

Як жа я зрабіць пераклад радка пасля кожнага другога элемента радкі, выкарыстоўваючы выбухаць() ці інакш?

1
@watkib Праверце мой адказ ніжэй.
дададзена аўтар Passerby, крыніца
@watkib Праверце мой адказ ніжэй.
дададзена аўтар Passerby, крыніца
У залежнасці ад таго, што вы хочаце рабіць далей, array_chunk() можа быць карысным.
дададзена аўтар Passerby, крыніца
У залежнасці ад таго, што вы хочаце рабіць далей, array_chunk() можа быць карысным.
дададзена аўтар Passerby, крыніца
захаваць лічыльнік. і калі Лічыльнік% 2 == 0 дадаць \ п
дададзена аўтар curious_coder, крыніца
захаваць лічыльнік. і калі Лічыльнік% 2 == 0 дадаць \ п
дададзена аўтар curious_coder, крыніца
@Passerby Дзякуй, вяртае масіў . Тым не менш, я хачу, каб адлюстраваць толькі значэнне масіва.
дададзена аўтар watkib, крыніца
@Passerby Дзякуй, вяртае масіў . Тым не менш, я хачу, каб адлюстраваць толькі значэнне масіва.
дададзена аўтар watkib, крыніца

10 адказы

<?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);
2
дададзена
Дзякуй вам, што гэта робіць гэта занадта. Даведаўся нешта новае таксама PHP_EOL цікавае.
дададзена аўтар watkib, крыніца

Дзеля фантазіі:

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

Інтэрнэт дэма

1
дададзена
Гэта працуе дзякуй. Прыйшлося змяніць
для HTML.
дададзена аўтар watkib, крыніца

неправеранай, але нешта, як гэта павінна працаваць

$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 "
";//or echo "\n"; } $i++; }
1
дададзена
Я прачытаў, што для цотнасці тэставання гэта хутчэй выкарыстоўваць $ я && 1
дададзена аўтар Voitcus, крыніца
$ Я & 1 Яго хуткая версія $ я% 2, але я не ведаю, калі гэта неабходна для вашага выпадку. асабліва калі вы пачатковец яго крыху складана зразумець. Калі вы хочаце ведаць, што вы можаце прачытаць больш пра тут: php.net/ ручной/EN/language.operators.bitwise.php ( "$ я & 1" роўны 1, калі $ я няцотна)
дададзена аўтар steven, крыніца
Гэта павінна было б быць і 1, а не && 1. && быць лагічны аператар заўсёды вяртае ісціну, калі абодва бакі з'яўляюцца станоўчымі лікамі. & 1 будзе вяртаць 1, калі, і толькі калі малодшы біт усталяваны.
дададзена аўтар SBI, крыніца
Працы, весяліць. <�Код> $ я && 1 што гэта значыць?
дададзена аўтар watkib, крыніца

неправеранай, але нешта, як гэта павінна працаваць

$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 "
";//or echo "\n"; } $i++; }
1
дададзена
Я прачытаў, што для цотнасці тэставання гэта хутчэй выкарыстоўваць $ я && 1
дададзена аўтар Voitcus, крыніца
$ Я & 1 Яго хуткая версія $ я% 2, але я не ведаю, калі гэта неабходна для вашага выпадку. асабліва калі вы пачатковец яго крыху складана зразумець. Калі вы хочаце ведаць, што вы можаце прачытаць больш пра тут: php.net/ ручной/EN/language.operators.bitwise.php ( "$ я & 1" роўны 1, калі $ я няцотна)
дададзена аўтар steven, крыніца
Гэта павінна было б быць і 1, а не && 1. && быць лагічны аператар заўсёды вяртае ісціну, калі абодва бакі з'яўляюцца станоўчымі лікамі. & 1 будзе вяртаць 1, калі, і толькі калі малодшы біт усталяваны.
дададзена аўтар SBI, крыніца
Працы, весяліць. <�Код> $ я && 1 што гэта значыць?
дададзена аўтар watkib, крыніца
<?php
$labels = Requisitions::getLabelNames($id);
foreach($labels as $label) { 
    $labels_array[] = $label['name'];
    }

for($i=0;$i
1
дададзена
Былі абноўленыя рашэння. 3v4l.org/TTcLV
дададзена аўтар curious_coder, крыніца
Працуе цяпер, дзякуй.
дададзена аўтар watkib, крыніца
Прывітанне, зачыніць, см 3v4l.org/TdEYY
дададзена аўтар watkib, крыніца

Вы можаце выкарыстоўваць Еогеасп для таго каб дасягнуць гэтага, ім-код абклейвання для вас, які дасць вам ваш жаданы вынік

<?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.",
"; } } else { if($key==$lastkey) { echo $value."
"; } else { echo $value.",
"; } } $key++; } ?>
1
дададзена
проста заменіце яшчэ {рэха $ значэнне "
". .}
з яшчэ {рэха $ значэнне "
"; }
дададзена аўтар curious_coder, крыніца
@watkib я адрэдагаваны код. калі ласка, праверце яго, ён будзе вырашыць вашу праблему друку коскі
дададзена аўтар Kashyap, крыніца
Як я цяпер няма коскі пасля апошняга элемента апошняга радка, выкарыстоўваючы сваё рашэнне?
дададзена аўтар watkib, крыніца
Дзякуй, гэта таксама працуе.
дададзена аўтар watkib, крыніца

Вы можаце выкарыстоўваць Еогеасп для таго каб дасягнуць гэтага, ім-код абклейвання для вас, які дасць вам ваш жаданы вынік

<?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.",
"; } } else { if($key==$lastkey) { echo $value."
"; } else { echo $value.",
"; } } $key++; } ?>
1
дададзена
проста заменіце яшчэ {рэха $ значэнне "
". .}
з яшчэ {рэха $ значэнне "
"; }
дададзена аўтар curious_coder, крыніца
@watkib я адрэдагаваны код. калі ласка, праверце яго, ён будзе вырашыць вашу праблему друку коскі
дададзена аўтар Kashyap, крыніца
Як я цяпер няма коскі пасля апошняга элемента апошняга радка, выкарыстоўваючы сваё рашэнне?
дададзена аўтар watkib, крыніца
Дзякуй, гэта таксама працуе.
дададзена аўтар watkib, крыніца
$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));
0
дададзена
Так, копія ўставілі, што ведаю, што было прычынай, што па пэўнай прычыне на маёй баку ...
дададзена аўтар We0, крыніца
Вядома, карыстальнік можа зразумець, як рэха $ вул;
дададзена аўтар We0, крыніца
<�Код> $ вул = зиЬзЬги ($ вул, 0, -2); павінен быць дастаткова
дададзена аўтар Voitcus, крыніца
См 3v4l.org/llW1S , У нас не трэба рэха што-то?
дададзена аўтар watkib, крыніца
$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));
0
дададзена
Так, копія ўставілі, што ведаю, што было прычынай, што па пэўнай прычыне на маёй баку ...
дададзена аўтар We0, крыніца
Вядома, карыстальнік можа зразумець, як рэха $ вул;
дададзена аўтар We0, крыніца
<�Код> $ вул = зиЬзЬги ($ вул, 0, -2); павінен быць дастаткова
дададзена аўтар Voitcus, крыніца
См 3v4l.org/llW1S , У нас не трэба рэха што-то?
дададзена аўтар watkib, крыніца

Калі вы не маеце патрэбу ў масіве нешта яшчэ, гэта проста будуе радок ...

<?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;
?>

Калі вам патрэбен масіў для чагосьці, спачатку стварыце яго і мадыфікаваць вышэй па меры неабходнасці.

0
дададзена