如何在 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 中将数组元素转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章