返回散列数组中的值

时间:2017-09-22 19:03:09

标签: arrays ruby hash

我有一项任务,我无法弄清楚我的错误在哪里。我在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

但是那个输出只给了我七个:没有前面的用户名或之后的描述。

2 个答案:

答案 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