我有一项任务,我无法弄清楚我的错误在哪里。我在twitter_data方法下有大量的哈希值。哈希的结构如此。
<?php
$from="noreply@email.com";
$email="my email";
$name=$_POST['name'];
$phone=$_POST['phone'];
$subject=$_POST['subject'];
$message=$_POST['message'];
mail ( $email, $subject, $message, "From:".$from);
Print "Thank you! Your message has been sent!"
?>
现在,如果我想列举所有用户及其描述,我认为代码会这样读。
def twitter_data
[{"User"=>
{"description"=>
"Description here",
"last twenty tweets"=>
["tweets written out here"],
"number of followers"=>1000,
"number of friends"=>100,
"latest tweet"=>
"tweet written out here",
"number of tweets"=>1000,
"location"=>"Wherever, Wherever"}},]
end
但是那个输出只给了我七个:没有前面的用户名或之后的描述。
答案 0 :(得分:0)
正如您所看到的,description
键嵌套在另一个哈希中,其键为User
。我不知道哪个是您要打印的另一个键,因为数据似乎不完整但是如果您只打印描述这个应该有效
twitter_data.each do |user_data|
description = user_data["User"]["description"]
puts description
end
答案 1 :(得分:0)
为什么这不起作用有几个原因:
1)twitter_data
中的each
元素看起来像{ 'User' => { 'description'...
。在该哈希值上,:description
键下存储的值为nil。
2)即使你通过twitter_data['User']
引用正确的哈希值,你仍然会使用符号(例如:description
)而不是字符串。即便如此,为密钥存储的值也将为零。
3)即使在哪里使用字符串(例如:twitter_data
),您也会引用哈希中似乎不存在的元素。现在这可能仅仅是由于选择的例子。
正确引用哈希值的方法是什么:
twitter_data.each do |data|
user_hash = data['User']
puts "#{user_hash['twitter_data']}: #{user_hash['description']}"
end