gpt4 book ai didi

perl - join() 函数返回类型,后跟十六进制数字而不是连接字符串

转载 作者:行者123 更新时间:2023-12-04 09:31:33 24 4
gpt4 key购买 nike

本质上,我想获取一个数组并创建一个字符串,其中所述数组的元素由换行符分隔。

我有一个名为 $zones 的数组.输出对 $zones 的引用确认它是一个数组。

以下代码:

print_log(Dumper($zones));
print_log('-------');
print_log(Dumper(join("\n",$zones)));

导致以下输出
  [2013-06-15 16:23:29 -0500] info [dnsadmin] $VAR1 = [
'fake.com25',
'fake.com2',
'fake.com27',
'fake.com43',
'fake.com41',
'fake.com40',
'fake.com39',
'fake.com37',
'fake.com36',
'fake.com35',
'fake.com31',
'fake.com56',
'fake.com55',
'fake.com54',
'fake.com53',
'fake.com52',
'fake.com51',
'fake.com50',
'fake.com49',
'fake.com48',
'fake.com42',
'fake.com38',
'fake.com34',
'fake.com33',
'fake.com32',
'fake.com30',
'fake.com29',
'fake.com28',
'fake.com26',
'fake.com24',
'fake.com23',
'fake.com69',
'fake.com68',
'fake.com67',
'fake.com66',
'0',
'fake.com44',
'fake.com45',
'fake.com46',
'fake.com278'
];

[2013-06-15 16:23:29 -0500] info [dnsadmin] -------
[2013-06-15 16:23:29 -0500] info [dnsadmin] $VAR1 = 'ARRAY(0x170cf0d8)';

我真的不想手动循环这个数组。谁能解释为什么 join()函数返回类型的名称以及十六进制数字?

最佳答案

user1937198很好地解释了如何做,但是为什么它会这样工作呢?

这很简单:
$zones不是数组。这是一个数组引用。
join适用于列表。所以如果你这样做:

join("\n",$zones)

您实际上是在调用 join在单元素列表上。并且元素是一个引用,它恰好被字符串化为 ARRAY(0x170cf0d8) .

为了使其正常工作,您必须取消引用它,并且通过使用实际数据类型( @% 或在某些情况下为 $ )前缀来完成。

可以这样写: @$zones ,或者(包括我在内的一些人说它更易读)为: @{ $zones } .

当您拥有嵌套结构时,这一点很重要,因为虽然您可以将普通数组作为变量,但当您处理嵌套数据结构时,它始终是引用。

关于perl - join() 函数返回类型,后跟十六进制数字而不是连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17128069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com