Как объединить все элементы массива в одну строку?
Использовать функцию 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
Вы можете изменить шаблон для получения желаемого результата!