web-dev-qa-db-ja.com

PHPで配列要素を文字列にキャストする方法は?

オブジェクトを含む配列がある場合:

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

(各オブジェクトには__toString()- methodがあります)

すべての配列要素を文字列にキャストして、配列_$a_に文字列表現以外のオブジェクトが含まれないようにするにはどうすればよいですか?ワンライナーがありますか、またはアレイを手動でループする必要がありますか?

70
acme

ワンライナー:

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

PHP DOCS:

array_map

strval

楽しい! ;)

146
Alix Axel

テストされていませんが、このようなことはそれを行う必要がありますか?

foreach($a as $key => $value) {
    $new_arr[$key]=$value->__toString();
}
$a=$new_arr;
2
Ben Everard

implode をお探しですか?

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

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

echo $comma_separated; // lastname,email,phone
0
YOU

私は今それをテストすることはできませんが、 implode() そのような配列のときに何が起こるかを確認できますか? _toStringshouldを呼び出す必要があります。

0
Pekka 웃

Alix Axelが最も良い答えを持っています。次のような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
Jan Jaso