【问题标题】:How to point at the right key to get some value from array?如何指向正确的键以从数组中获取一些值?
【发布时间】:2011-03-18 19:26:04
【问题描述】:

我有如下所示的数组数据, 如果我的货币是美元,我想将“销售”价值存储到数据库中。

数组([货币] => 美元 [销售] => 9120.00 [购买] => 8970.00) 数组([货币] => SGD [销售] => 6653.75 [买入] => 6520.75) 数组 ( [货币] => HKD [销售] => 1173.40 [买] => 1152.10 ) 数组([货币] => CHF [销售] => 8685.40 [购买] => 8517.40) 数组([货币] => GBP [销售] => 13958.80 [买入] => 13675.80) 数组([货币] => AUD [销售] => 8054.05 [购买] => 7885.05) 数组( [货币] => 日元 [销售] => 105.10 [购买] => 102.40 ) 数组([货币] => SEK [销售] => 1247.90 [购买] => 1216.80) 数组([货币] => DKK [销售] => 1590.95 [购买] => 1547.75) 数组([货币] => CAD [销售] => 8756.35 [购买] => 8568.35) 数组([货币] => EUR [销售] => 11776.75 [购买] => 11555.75) 数组([货币] => SAR [销售] => 2441.35 [买入] => 2382.35) 数组([货币] => NZD [销售] => 6550.75 [购买] => 6389.75) 数组([货币] => CNY [销售] => 1346.75 [购买] => 1322.35)

谢谢。

这是我的代码:

foreach ($cur_array as $curs) {
    print_r ($curs)."<br>";
    if ($curs['currency'] = "USD") {
        $curs_sale = $curs['sale'];
            $curs_name = $curs['currency'];
            $db->query("UPDATE currency SET rate = '".
                $curs_sale."' WHERE currency_id ='".$curs_name."'");
    }
}

【问题讨论】:

  • 您的表格列与您的变量不对应。那里有点混乱......

标签: php arrays key


【解决方案1】:

您可以将所有货币数组存储在一个数组中,循环遍历它,检查哪些货币对应于美元并保存该货币的销售价值:

foreach ($currencies as $curr)
{
    if ($curr['currency'] == 'USD')
    {
        // Save $curr['sale'] into your database

        // Break as further iteration isn't needed
        break;
    }
}

以后如果您不知道what community wiki means,请不要将问题标记为社区wiki。

【讨论】:

  • 对 Community Wiki 感到非常抱歉。存储值是 $cur_sale 的最后一个值。当我添加 break 语句时,我可以存储正确的值。但是,如果我想同时存储 currency_name 和销售价值怎么办。谢谢。
  • SET currency_name = '" . $curs_name . "', rate = '" . $curs_sale . "' WHERE currency_id = '" . $curs_name . "' 虽然我不确定您还有哪些其他变量,因为您似乎也将$curs_name 用于currency_id。对了,一定要escape your data
  • 这就是我想要的:$db->query("UPDATE currency SET rate = '".$curs_sale."' WHERE currency_id ='".$curs_name."'");
    感谢您的建议。
  • 如何同时存储货币名称和销售价值?
【解决方案2】:

BoltClock 的建议是正确的。此外,请考虑从以下位置更改数组的结构:

数组([货币] => 美元 [销售] => 9120.00 [购买] => 8970.00) 数组([货币] => SGD [销售] => 6653.75 [买入] => 6520.75) 数组 ( [货币] => HKD [销售] => 1173.40 [买] => 1152.10 ) 数组([货币] => CHF [销售] => 8685.40 [购买] => 8517.40)

到:

大批 ( [USD] => Array([sale] => 9120.00 [buy] => 8970.00), [SGD] => Array([sale] => 6653.75 [buy] => 6520.75), [港币] => 数组([卖出] => 1173.40 [买入] => 1152.10 ), [瑞士法郎] => 数组([销售] => 8685.40 [购买] => 8517.40) )

这种结构可以让你写出更简洁的代码,例如:

$usd_sale = $entries['USD']['sale'];

【讨论】:

  • 但它可能无法充分映射到数据的键 - 这看起来可能是订单或产品表,在这种情况下,货币不是输入的正确键。你能想象让 Currency 成为数据库中类似实体表的主键吗?
  • @Shabbyrobe: table Currencies(int id, varchar name, float sale, float buy),代码:while ($line = mysql_fetch_array($result)) $entries[$line['name']] = array('sale'=&gt;$line['sale'], 'buy'=&gt;$line['buy']);
【解决方案3】:

假设所有条目都在一个名为 $entries 的数组中:

foreach ($entries as $entry) {
    if ($entry['currency'] == 'USD') {
        // do stuff with $entry['sale']
    }
}

【讨论】:

    猜你喜欢
    • 2022-11-22
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    相关资源
    最近更新 更多