-2

私はこの配列を持っています:

array (
  1 => 
  array (
    'name' => 'Product 1',
    'price' => '5',
  ),
  2 => 
  array (
    'name' => 'Product 2',
    'price' => '$10',
  ),
  3 => 
  array (
    'name' => 'Product 3',
    'price' => '$50',
  ),
  4 => 
  array (
    'name' => 'Product 4',
    'price' => '20',
  ),
)

この配列をループして、すべての価格を 10 進形式に再フォーマットする必要があります。たとえば、10 は 10.00 になり、50 は 50.00 になります。$50 の値を送信したユーザーから $ が存在する場合は、$ が削除されていることを確認する必要もあります。

これらの値が置き換えられた後。$result の値に次のような配列が必要なので、次のようになります。

array (
  1 => 
  array (
    'name' => 'Product 1',
    'price' => '5.00',
  ),
  2 => 
  array (
    'name' => 'Product 2',
    'price' => '10.00',
  ),
  3 => 
  array (
    'name' => 'Product 3',
    'price' => '50.00',
  ),
  4 => 
  array (
    'name' => 'Product 4',
    'price' => '20.00',
  ),
)

ありがとう、すべての助けを!

4

5 に答える 5

0

これはあなたが求めていたことをします:

    $arrayhelp = array (
      1 => 
      array (
        'name' => 'Product 1',
        'price' => '5',
      ),
      2 => 
      array (
        'name' => 'Product 2',
        'price' => '$10',
      ),
      3 => 
      array (
        'name' => 'Product 3',
        'price' => '$50',
      ),
      4 => 
      array (
        'name' => 'Product 4',
        'price' => '20',
      ),
    );

^ あなたの配列 V コード

    foreach ($arrayhelp as &$row):

        $row['price'] = number_format(str_replace('$','',$row['price']),2,'.','');
    endforeach;

    print_r($arrayhelp);

千単位で区切りたい場合:

    foreach ($arrayhelp as &$row):

        $row['price'] = number_format(str_replace('$','',$row['price']),2,'.',',');
    endforeach;

    print_r($arrayhelp);
于 2013-04-06T05:54:18.100 に答える
0

単純に配列をループし、$ 記号を削除して、小数点以下をフォーマットします。

foreach ($array as $item => $data) {

    // remove $
    $array[$item]['price'] = ltrim($array[$item]['price'], '$');

    // format decimals
    $array[$item]['price'] = number_format($array[$item]['price'], 2, '.', '');

}
于 2013-04-06T05:48:36.337 に答える
0
foreach ($array as &$element) {
  $element['price'] = sprintf("%.2f", str_replace('$', '', $element['price'];
}

繰り返し&変数の前に配置すると、コピーではなく実際の要素への参照になるため、割り当てを使用してその場で変更できます。

于 2013-04-06T05:45:44.680 に答える
0

これを試して、$arr と仮定して変数に配列を割り当てます。

foreach($arr as $item=>$val)
{   
    $arr[$item]['price']=number_format(str_replace('$','',$val['price']),2);
}

 print_r($arr); // return your desire array format.
于 2013-04-06T05:46:21.790 に答える
0

これはあなたが望むかもしれません:

$result = array (
  1 => 
  array (
    'name' => 'Product 1',
    'price' => '5',
  ),
  2 => 
  array (
    'name' => 'Product 2',
    'price' => '$10',
  ),
  3 => 
  array (
    'name' => 'Product 3',
    'price' => '$50',
  ),
  4 => 
  array (
    'name' => 'Product 4',
    'price' => '20',
  ),
);

$output = array();
foreach($result as $key => $value) {
   $output[$key]['name'] = $value['name'];

   //remove all characters except number and dot.. This will help to remove if instead of $ any other money format comes.
   $new_price = preg_replace("/[^0-9.]/", "", $value['price']);

   $new_price = number_format($new_price, 2, '.', '');
   $output[$key]['price'] = $new_price; 

}

print_R($output);

これがお役に立てば幸いです:)

于 2013-04-06T05:52:55.730 に答える