PHPスクリプトを使用してMagentoのグローバルな価格を更新する際には、どのように数値を切り上げますか?

スタックオーバーフローメンバーが親切に提案したストア内のすべての製品の価格を更新するために、私はmagentoのルートディレクトリに次のスクリプトを用意しています。これは、すべての製品価格に3%を追加しますが、

<?php 
require 'app/Mage.php';
Mage::app();

$products = Mage::getModel('catalog/product')->getCollection();
foreach ($products as $product) {
    $product->setPrice($product->getPrice()* 1.03);
    $product->save();
}
?>

私はceilやroundのようないくつかのPHPコードを試してきましたが、実際にこのコードで動作させる方法は分かりません。何か助けていただければ幸いです。

1
@Dave例:10.34~10:40多くありがとう
追加された 著者 Ledgemonkey,
@Henesnarfelはい正解私はあなたの提案を試みた> ceil($ product-> setPrice($ product-> getPrice()* 1.03));ラウンドしないのですか?ありがとう
追加された 著者 Ledgemonkey,
@ Henesnarfelあなたの助けに多くの感謝....
追加された 著者 Ledgemonkey,
あなたは何を回そうとしていますか?
追加された 著者 Dave,
ceilは丸めてうまく動作するはずです。 ceil($ product-> getPrice()* 1.03)
追加された 著者 Henesnarfel,
@ Ledgemonkeyので、小数点以下の数字を丸めたいだけですか?
追加された 著者 Henesnarfel,
@Ledgemonkey ceil関数は、整数を最も近い整数に丸めます。ラウンドは必要な機能です。下のMaxの答えを見てください。
追加された 著者 Henesnarfel,

1 答え

<?php
require 'app/Mage.php';
Mage::app();
$products = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToSelect('price')
    ;
foreach ($products as $product) {
    $oldPrice = $product->getPrice();
    $increase = 1.03;
    $newPrice = round($oldPrice * $increase , 1);// rounds to the nearest $0.10
                                                //so $183.34 rounds to $183.30
    $product->setPrice($newPrice);
    $product->save();
}

インラインHTMLを書きたくない場合は、PHPタグを閉じる必要はありません。

3
追加された
あなたの助けに感謝しています。 > addAttributeToSelect( 'price')が欠けていましたが、コードを編集したことはありません。私はもう一度たくさんのことを学んだ
追加された 著者 Ledgemonkey,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com