【发布时间】:2015-01-25 03:35:17
【问题描述】:
我已经编写了这个脚本以在 PHP 中运行,并且正在尝试将其转换为 Ruby。
代码:
$cases = array();
foreach($results as $result)
{
if(!array_key_exists($result['id'], $cases))
$cases[$result['id']] = array($result);
else
$cases[$result['id']][] = $result;
}
foreach($cases as $key => $case)
{
foreach($case as $payment)
{
if(count($case) > 1)
{
$cases[$key]['total'] += ($payment['p1'] > $payment['p2']) ? $payment['p1'] : $payment['p2'];
} else {
$cases[$key]['total'] = ($payment['p1'] > $payment['p2']) ? $payment['p1'] : $payment['p2'];
}
}
}
在 Ruby 中,我将结果作为 MySQL 返回的数组(使用 mysql2 gem)。使用下面的循环,它打印每一行。不提供密钥时如何检查密钥是否存在?
在 Ruby 中实现此代码的最佳方式是什么?如何在 Ruby 中将哈希添加到哈希中,类似于将数组添加到 PHP 中的数组。
results.each(:as => :array) do |row|
puts row.inspect
end
更多解释:
PHP 结构
Array(
0 => Array(
Array(
[id] => 'random id',
[p1] => 534,
[p2] => 105
),
Array(
[id] => 'random id',
[p1] => 335,
[p2] => 425
)
),
1 => Array(
Array(
[id] => 'random id',
[p1] => 259,
[p2] => 124
)
)
)
我正在尝试遍历第一个数组中的每个数组,如果 p1 > p2,则将 p1 添加到该数组的总键中。即,0 索引看起来像这样:
0 => Array(
'total' => 959,
Array(
[id] => 'random id',
[p1] => 534,
[p2] => 105
),
Array(
[id] => 'random id',
[p1] => 335,
[p2] => 425
)
)
【问题讨论】: