如何在 PHP 中将数组元素转换为字符串?

Posted

技术标签:

【中文标题】如何在 PHP 中将数组元素转换为字符串?【英文标题】:How to cast array elements to strings in PHP? 【发布时间】:2011-01-09 01:01:04 【问题描述】:

如果我有一个包含对象的数组:

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

(每个对象都有一个__toString()-方法)

如何将所有数组元素转换为字符串,以便数组$a 不包含更多对象,只包含它们的字符串表示形式?是否有单行或我必须手动循环遍历数组?

【问题讨论】:

你看过php.net/array_map吗? 见 - ***.com/questions/12682232/… @RohitSuthar :您的链接答案从字符串中创建了一个数组。这个问题是关于将对象数组转换为其字符串表示形式的数组。 【参考方案1】:

单行:

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

参见 PHP 文档:

array_map

strval

【讨论】:

【参考方案2】:

未测试,但应该这样做吗?

foreach($a as $key => $value) 
    $new_arr[$key]=$value->__toString();

$a=$new_arr;

【讨论】:

阅读问题,它说“是否有单行或我必须手动循环...”:) 是的,正如我在对 Alix 帖子的评论中所建议的那样,如果我知道的话,我会提供他的解决方案。【参考方案3】:

你在找implode吗?

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

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

echo $comma_separated; // lastname,email,phone

【讨论】:

不,因为我的数组由对象组成,而不是字符串。结果应该是一个数组而不是一个内爆字符串。【参考方案4】:

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);

享受

【讨论】:

【参考方案5】:

我现在不能测试它,但是你能检查一下当你implode()这样一个数组时会发生什么吗? _toString 应该被调用。

【讨论】:

确实如此。简单的implode($array) 就可以了。 @Gordon:虽然它会将所有字符串合并为一个,但我认为 OP 希望将__toString() 生成的字符串保留在相应的数组元素中。 对,我希望数组保持完整,并且只有其中的元素转换为字符串。 @Alix 哦,我明白了。是的。然后内爆就不行了。 @nikc:如果生成的__toString() 包含,,则不会。【参考方案6】:

你有什么理由不能做以下事情吗?

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

【讨论】:

是的,因为实际上我不知道数组中有多少个元素。上面的示例只是简化为两个元素以使其更加清晰。

以上是关于如何在 PHP 中将数组元素转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在php laravel中将数组键转换为随机字符串

在java中将字符串数组元素转换为字节数组[重复]

如何在PHP中将对象转换为特定格式的数组

如何在 C++ 中将字符串数组转换为整数数组?

如何在配置单元中将字符串转换为数组?

如何在 C++ 中将字符串数组转换为字符串类型,如将每个元素连接成一个字符串,并在字符串上使用子字符串?