Esempio n. 1
0
 public function testArrayInterleave()
 {
     $this->assertEquals([], Arrays::interleave('x', []));
     $this->assertEquals(['y'], Arrays::interleave('x', ['y']));
     $this->assertEquals(['y', 'x', 'z'], Arrays::interleave('x', ['y', 'z']));
     $this->assertEquals(['y', 'x', 'z'], Arrays::interleave('x', ['kangaroo' => 'y', 'marmoset' => 'z']));
     $obj1 = (object) [];
     $obj2 = (object) [];
     $this->assertEquals([$obj1, $obj2, $obj1, $obj2, $obj1], Arrays::interleave($obj2, [$obj1, $obj1, $obj1]));
     $implode_tests = ['' => [1, 2, 3], 'x' => [1, 2, 3], 'y' => [], 'z' => [1]];
     foreach ($implode_tests as $x => $y) {
         $this->assertEquals(implode('', Arrays::interleave($x, $y)), implode($x, $y));
     }
 }
Esempio n. 2
0
 /**
  * Add an element between every two elements of some array. That is, given a
  * list `A, B, C, D`, and some element to interleave, `x`, this function returns
  * `A, x, B, x, C, x, D`. This works like `implode()`, but does not concatenate
  * the list into a string. In particular:
  *
  *   implode('', array_interleave($x, $list));
  *
  * ...is equivalent to:
  *
  *   implode($x, $list);
  *
  * One case where this is useful is in rendering lists of HTML elements
  * separated by some character, like a middle dot:
  *
  *   phutil_tag(
  *     'div',
  *     array(),
  *     array_interleave(" \xC2\xB7 ", $stuff));
  *
  * This function does not preserve keys.
  *
  * @param $interleave mixed  Element to interleave.
  * @param $array      array List of elements to be interleaved.
  *
  * @return array Original list with the new element interleaved.
  * @group util
  *
  * @deprecated
  */
 function array_interleave($interleave, array $array)
 {
     return \Packaged\Helpers\Arrays::interleave($interleave, $array);
 }