Если у меня есть массив с объектами:
$a = array($objA, $objB);
(каждый объект имеет __toString()
)
Как я могу передать все элементы массива в строку, чтобы массив $a
содержал больше объектов, кроме их строкового представления? Есть ли один лайнер или мне приходится вручную прокручивать массив?
Однострочный:
$a = array_map('strval', $a);
Наслаждайтесь! 😉
Вы ищете взрыв ?
$array = array('lastname', 'email', 'phone'); $comma_separated = implode(",", $array); echo $comma_separated; // lastname,email,phone
Не проверено, но что-то вроде этого должно это сделать?
foreach($a as $key => $value) { $new_arr[$key]=$value->__toString(); } $a=$new_arr;
Я не могу проверить это прямо сейчас, но можете ли вы проверить, что произойдет, когда вы implode()
такой массив? Необходимо вызвать _toString.
У Аликса Акселя самый приятный ответ. Вы также можете применить что-либо к массиву, хотя с помощью 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);
наслаждаться
Есть ли причина, по которой вы не можете сделать следующее?
$a = array( (string) $objA, (string) $objB, );