0

我正在研究假设比较产品的网站。所以我已经达到了以下数组

Array ( [iPhone 4 8GB Black] => 319 [iPhone 4S] => 449 [iphone 5] => 529 ) 

数组的键是产品名称,数组的值是价格。现在我想把这个数组翻译成这样的语句

iphone 4 8GB 黑色最便宜!

iPhone 48GB Black 比 iPhone 4S 便宜 130 英镑(计算:449-319)。

iPhone 48GB Black 比 iPhone 5 便宜 210 英镑(计算:529-319)。

iPhone 4S 比 iPhone 5 便宜 80 英镑(计算:529-449)。

iphone 5 是您选择的列表中最昂贵的产品。

请帮助我如何从数组中输出这些语句。您建议在比较方面用这个数组做其他事情也很好。谢谢你。

4

1 回答 1

1

首先,您必须对数组进行排序asort(以保持索引和值之间的关联,并对值进行排序)。

asort($yourArray);

然后,当您的数组被排序时,您可以隔离价格和名称。

$names = array_keys($yourArray);
$prices = array_values($yourArray);

此时,您有 2 个数字索引数组,其中包含您的标签和价格,并且这 2 个数组是同步的。

最后,您只需从 0 循环到数组的长度(其中一个,其大小相同)并制作您的过程:

for($i = 0 ; $i < count($names) ; $i++)
{
    if ($i == 0)
    {
        // First product -> cheapest
        echo "The product " . $names[$i] . " is cheapest";
    }
    else if ($i == (count($names) - 1))
    {
        // Last product, the most expensive
        echo "The product " . $names[$i] . " is the most expensive product of the list";
    }
    else
    {
        // calculate the diff between current product and first product
        $diff = $price[$i] - $price[0];
        echo "The product " . $names[$i] . " is " . $diff . " more expensive than " . $names[0];
    }
}

此示例与第一个产品进行了比较。

如果你需要所有组合,它有点复杂,你必须做一个双循环:

// Hard print the first product
echo "The product " . $names[0] . " is the cheapest";

// Make all possible comparisions
for($j = 0 ; $j < (count($names) - 1) ; $j++)
{
    for($i = ($j+1) ; $i < count($names) ; $i++)
    {
        // calculate the diff between current product and first product
        $diff = $price[$i] - $price[$j];
        echo "The product " . $names[$i] . " is " . $diff . " more expensive than " . $names[$j];
    }
}

// Hard print the last product
echo "The product " . $name[count($names) - 1] . " is the more expensive";
于 2013-03-05T11:26:31.407 回答