Как привести элементы массива к строкам в PHP? - PullRequest
69 голосов
/ 25 января 2010

Если у меня есть массив с объектами:

$a = array($objA, $objB);

(каждый объект имеет __toString() -метод)

Как я могу привести все элементы массива к строке, чтобы массив $a не содержал больше объектов, кроме их строкового представления? Есть ли однострочник или я должен вручную перебирать массив?

Ответы [ 6 ]

142 голосов
/ 25 января 2010

Однострочник:

$a = array_map('strval', $a);
// strval is a callback function

См. PHP DOCS:

array_map

strval

Наслаждайтесь! ;)

2 голосов
/ 25 января 2010

Не проверено, но что-то подобное должно это сделать?

foreach($a as $key => $value) {
    $new_arr[$key]=$value->__toString();
}
$a=$new_arr;
1 голос
/ 25 января 2010

Вы ищете взорваться ?

$array = array('lastname', 'email', 'phone');

$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone
0 голосов
/ 02 сентября 2016

Аликс Аксель имеет самый хороший ответ. Вы также можете применить что угодно к массиву, хотя с array_map, как ...

//All your objects to string.
$a = array_map(function($o){return (string)$o;}, $a);
//All your objects to string with exclamation marks!!!
$a = array_map(function($o){return (string)$o."!!!";}, $a);

Наслаждайтесь

0 голосов
/ 25 января 2010

Есть ли причина, по которой вы не можете сделать следующее?

$a = array(
    (string) $objA,
    (string) $objB,
);
0 голосов
/ 25 января 2010

Я не могу проверить это прямо сейчас, но вы можете проверить, что происходит, когда вы implode() такой массив? _ToString должен вызываться .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...