Объединить элементы массива в строку

Как объединить все элементы массива в одну строку?

Related of "Объединить элементы массива в строку"

Использовать функцию implode php manual implode

Например:

 $fruits = array('apples', 'pears','bananas'); echo implode(',',$fruits); 

Попробуйте это из руководства php (http://php.net/manual/en/function.implode.php):

 <?php $array = array('lastname', 'email', 'phone'); $comma_separated = implode(",", $array); echo $comma_separated; // lastname,email,phone // Empty string when using an empty array: var_dump(implode('hello', array())); // string(0) "" ?> 

Если вы пытаетесь просто конкатрировать все строки в массиве, тогда вы должны посмотреть на implode () http://us3.php.net/manual/en/function.implode.php

 $array1 = array( "one", "two", ) $array2 = array( "three", "four", ) $finalarr = array_merge($array1, $array2); $finalarr = implode(",", $finalarr); 

будет производить этот, два, три, четыре

Вы можете использовать join, его псевдоним для implode, и, на мой взгляд, более читаемый

 $fruits = array('apples', 'pears','bananas'); echo join(',',$fruits); 
 join(" -- ", Array("a", "b")) == "a -- b" 

фактически объединение – это псевдоним для функции implode.

Если вы хотите объединить строковое представление группы объектов в одну строку, вы можете использовать implode в массиве этих объектов. Классы объектов должны иметь только __toString() .

 class myClass { protected $name; protected $value; public function __construct($name,$value) { $this->name = $name; $this->value = $value; } public function __toString() { return $this->name . '/' . $this->value; } } $obj1 = new myClass('one',1); $obj2 = new myClass('two',2); $obj_array = array($obj1, $obj2); $string_of_all_objects = implode('|',$obj_array); echo $string_of_all_objects; // 'one/1|two/2' 

Я нашел этот трюк, полезный для быстрого получения строкового представления группы объектов для отображения на веб-странице. Нет необходимости перебирать массив объектов с помощью foreach и использовать echo $obj->get('name') .

EDIT: И вот и пример с классом «коллекция». У меня есть 2 выхода (эхо) в конце. Второй должен работать, но я не уверен в 1-м.

 class myCollectionClass implements IteratorAggregate { protected $objects = array(); public function __construct() {}; public function add(myClass $object) { $this->objects[] = $object; return $this; // fluid } public function getIterator() { // for the interface return new ArrayIterator($this->objects); } public function __toString() { return implode($this->objects); } } $my_collection = new myCollectionClass(); $my_collection->add($obj1)->add($obj2); // add both myClass objects to the collection. can do in one line because fluid //echo implode('|',$my_collection); // Comment out myCollectionClass's __toString method to test this. does it work? I'm not sure. But the next line will work thanks to myCollectionClass' __toString, which itself uses myClass's __toString echo $my_collection; // same output as previous block before EDIT. 
 $array= array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang" ); $string=""; foreach ( $tempas $array) { $string=$string.",".$temp; } 
 foreach($array as $key => $value) { $string .= $value .' '; } 

Для нескольких массивов, таких как:

  $multi_arrays = array( 0 => array('model' => 'Product 1'), 1 => array('model' => 'Product 2'), 2 => array('model' => 'Product 3'), 3 => array('model' => 'Product 4')); $pattern = array('/\[/', '/\]/', '/{"model":/', '/}/', '/\"/'); $str_models = preg_replace($pattern, '', json_encode( $multi_arrays)); 

Результатом будет:

Продукт 1, продукт 2, продукт 3, продукт 4

Вы можете изменить шаблон для получения желаемого результата!