Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Используйте функцию implode.

Например:

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

Ответ 2

Попробуйте это из руководства по PHP (взорваться):

<?php
    $array = array('lastname', 'email', 'phone');
    $comma_separated = implode(",", $array);

    echo $comma_separated; // lastname, email, and phone

    // Empty string when using an empty array:
    var_dump(implode('hello', array())); // string(0) ""
?>

Ответ 3

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

Ответ 4

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

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

Ответ 5

Вы можете использовать соединение. Это псевдоним для взрыва, и на мой взгляд более читабельным:

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

Ответ 6

join(" -- ", Array("a", "b")) == "a -- b"

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

Ответ 7

Если вы хотите объединить строковое представление группы объектов в одну строку, вы можете использовать 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 выхода (эхо) в конце. Второй должен работать, но я не уверен в первом.

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 __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 __toString

echo $my_collection; // same output as previous block before EDIT.

Ответ 8

foreach($array as $key => $value) {

$string .= $value .' ';

}

Ответ 9

$array= array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang" );
$string="";

foreach ( $tempas $array) {
  $string=$string.",".$temp;
}

Ответ 10

Для Multi Array, например:

 $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

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