2017-11-21 14 views
-2

私は次元を入れる必要があるシンプルなフォームに取り組んでいます。 12x24x36。 インチからミリメートルに変換します。 304.8x609.6x914.4PHP:すべての配列値を変換する

文字を削除してすべての整数を配列にすることができました。 私の問題は、私はデータを爆破する前にすべての値を変換できません。

私はjavascriptを使用して既存のコードを持っていたので、それをphpに変換する必要があります。それぞれの値に更新するには、ここ

はあなたがexplodearray_map続い使用する必要がありますJS

function myFunction() { 
 
    var inches = document.getElementById("number1").value.split('x'); 
 
    var millimeters = []; 
 
    for (var i = 0; i < inches.length; i++) millimeters.push(parseInt(inches[i]*25.4)); 
 
    document.getElementById("number2").value = millimeters.join('x'); 
 
}
<h4>Dimensions</h4> 
 
<label>inches <input id="number1"></label> 
 
<label>mm <input id="number2"></label> 
 
<button type="button" onclick="myFunction()">convert</button>

+1

あなたを停止していますか?あなたが理解していない、同等のことを知らない、またはあなたがそれを書くときにエラーを出すコードの部分はありますか?あなたのPHPコードがアルファベット順で分割されている間、あなたのjavascriptコードは '' x ''で分割されます。それに加えて、あなたは分割されて崩壊した、あなたは真ん中の部分が必要です。 – Theraot

+0

_ "データを埋め込む前にすべての値を変換することはできません" - それはあなたがしようとしていないからです。 –

+0

さて、それは私にエラーを与える、私はforeachを試みたが、運なし – misdirection

答えて

2

を使用して

$split = preg_split("/[a-zA-Z]+/", $shipping_dimension); 
$dimension=implode("x", $split); 
echo $dimension; 

旧コード私のサンプルコードですDそしてimplodeを使用します。

$shipping_dimension='12x24x36'; 
$split = explode("x", $shipping_dimension); 

$newArray = array_map(function($value){ 
return $value*25.4; 
}, $split); 

echo implode('x', $newArray); 

は出力:

304.8x609.6x914.4 
+0

ありがとう、ありがとうございますが、「整形されていない数値が発生しました」というエラーが表示されます – misdirection

+0

エラーではありませんが通知があります。これは '$ value'のためです。 '$ value * 25.4'を'(float)$ value * 25.4'に変更することができます –

+0

ありがとうございました。 – misdirection

0

ます。またpreg_replace_callbackを使用することができます。

$input = ['12x24x36', '10x20x30', '5x3x7']; 
$output = preg_replace_callback(
    '#\d+#', 
    function ($match) { 
     return $match[0] * 25.4; 
    }, 
    $input 
); 

print_r($output); 

出力:

Array 
(
    [0] => 304.8x609.6x914.4 
    [1] => 254x508x762 
    [2] => 127x76.2x177.8 
) 
0
$inputDimension='12x24x36'; 
$split = explode("x", $inputDimension); 
$finalArray = array(); 
foreach($split as $key=>$value){ 
    $finalArray[$key] = $value*25.4; 
} 

echo implode('x', $finalArray); 
+0

答えが少し必要です –

+0

まず、入力文字列をPHPのexplode()関数の助けを借りて配列に変換する必要があります。次に、これをミリメートルに変換します。したがって、この乗算を25.4ですべての配列要素に変換します。次に、implode()関数の助けを借りて配列を再び文字列に変換します。 – Surabhi

0

また、このように試すことができます:

$shipping_dimension="12x24x36"; 
$split = explode("x", $shipping_dimension); 

foreach($split as $value) 
{ 
    $new_array[] = $value*25.4; 
} 

echo $temp_variable = implode('x',$new_array); 
関連する問題