Difference between revisions of "John's hacks"

From ProgClub
Jump to: navigation, search
Line 2: Line 2:
  
 
== Removing last comma ==
 
== Removing last comma ==
 +
 +
Sometimes you're processing a list to build a string and you want a comma after all items except the last one. You can do that like this:
 +
 +
// 2020-04-14 jj5 - it's important to handle this case...
 +
//
 +
if ( count( $list ) === 0 ) { return 'list is empty'; }
 +
 +
$result = 'my list: ';
 +
$is_first = true;
 +
 +
foreach ( $list as $item ) {
 +
 +
  if ( $is_first ) {
 +
 +
    $is_first = false;
 +
 +
  }
 +
  else {
 +
 +
    $result .= ', ';
 +
 +
  }
 +
 +
  $result .= $item;
 +
 +
}
 +
 +
But that can be simplified like this:
  
 
  // 2020-04-14 jj5 - it's important to handle this case...
 
  // 2020-04-14 jj5 - it's important to handle this case...

Revision as of 10:39, 14 April 2020

I decided I might start documenting some hacks I've come across in my travels which I think are neat.

Removing last comma

Sometimes you're processing a list to build a string and you want a comma after all items except the last one. You can do that like this:

// 2020-04-14 jj5 - it's important to handle this case...
//
if ( count( $list ) === 0 ) { return 'list is empty'; }

$result = 'my list: ';
$is_first = true;

foreach ( $list as $item ) {

  if ( $is_first ) {

    $is_first = false;

  }
  else {

    $result .= ', ';

  }

  $result .= $item;

}

But that can be simplified like this:

// 2020-04-14 jj5 - it's important to handle this case...
//
if ( count( $list ) === 0 ) { return 'list is empty'; }

$result = 'my list: ';

foreach ( $list as $item ) {

  $result .= "$item, ";

}

// 2020-04-14 jj5 - the neat hack is dropping the last two characters here...
//
return substr( $result, 0, -2 ) . '.';

Although the whole thing can often be simplified as something like this (you might also need to check for an empty list):

return 'my list: ' . implode( ', ', $list ) . '.';