1

PHP関数を作成していますが、1つの問題が発生します...

関数内の変数に foreach 値を設定できません。

私のコードはこれです...

配列:

$baremos_precios = array(
/* [baremo (id)] => [kilos_precio] => [kilos_hasta($key) => precio($value)] */
1 => array('kilos_precio' => array(
        /* kilos hasta => precio (sin IVA) */
        5 => 6.6,
        10 =>  7.76,
        20 => 11.03,
        30 => 14.79,
        40 => 17.13,
        50 => 19.46,
        60 => 21.79,
        70 => 24.12,
        80 => 26.46,
        90 => 28.8,
        100 => 31.14,
        120 => 35.8,
        140 => 40.47,
        160 => 45.14,
        180 => 49.83,
        200 => 54.2,
        225 => 56.4,
        250 => 58.59,
        275 => 63.77,
        300 => 68.94,
        325 => 74.1,
        350 => 79.28,
        375 => 84.45,
        400 => 89.62,
        425 => 94.79,
        450 => 99.96,
        475 => 105.12,
        500 => 108.08,
        550 => 110.07,
        600 => 113.08,
        650 => 117.02,
        700 => 125.53,
        750 => 134.03,
        800 => 142.52,
        850 => 151.02,
        900 => 159.53,
        950 => 168.02,
        1000 => 176.53,
        1001 => 0.16 // precio por cada kilo apartir de >1000, ex: 1100kg => 0.16 * 1100 = 176€ + IVA
        )
    )

);

そして foreach の関数

function obtener_precio($baremo, $kg){
    $precio = 0;
    foreach($baremos_precios AS $key => $value){
        if($key == $baremo) {

            foreach ($value['kilos_precio'] as $secondkey => $secondvalue) {
                $kilos_array = [$secondkey];
                if($kilos_array[0] == $kg){
                    $precio = $secondvalue;
                }
            }
        }
    }
    return $precio;
}

わかりました、今私はこれを試しています...

echo obtener_precio(1, 200);

そして、それから結果===> 54.2を取得したいのですが、常に0になりました

どこに問題がありますか?, ありがとう!

4

4 に答える 4

2

これは、関数自体に渡すのを忘れたためです。$baremos_preciosこれがないと、関数本体内から到達できません (汚いglobalトリックを使用しない限り)。したがって、これが必要です:

function obtener_precio($baremos_precios, $baremo, $kg){

そして呼び出すには:

echo obtener_precio($baremos_precios, 1, 200);
于 2013-03-06T13:11:13.357 に答える
0
    You can pass array as argument

function obtener_precio($baremos_precios,$baremo, $kg){
    //global $baremos_precios;
    $precio = 0;
    foreach($baremos_precios AS $key => $value){
        if($key == $baremo) {

            foreach ($value['kilos_precio'] as $secondkey => $secondvalue) {

                if($secondkey  == $kg){
                    $precio = $secondvalue;
                }
            }
        }
    }
    return $precio;
}
echo obtener_precio($baremos_precios,1, 200);

or you can use global variable 
function obtener_precio($baremo, $kg){
    global $baremos_precios;
    $precio = 0;
    foreach($baremos_precios AS $key => $value){
        if($key == $baremo) {

            foreach ($value['kilos_precio'] as $secondkey => $secondvalue) {

                if($secondkey  == $kg){
                    $precio = $secondvalue;
                }
            }
        }
    }
    return $precio;
}
echo obtener_precio(1, 200);
于 2013-03-06T13:34:39.340 に答える
0

グローバル変数の場合$baremos_preciosは、次のようにします。

function obtener_precio($baremo, $kg){
  global $baremos_precios;
...
于 2013-03-06T13:11:53.527 に答える
0

$baremos_precios関数の側で定義されていません

使用する :

function obtener_precio($baremos_precios, $baremo, $kg){

そしてそれを次のように呼び出す:

echo obtener_precio($baremos_precios, 1, 200);

================================================== =========

これの代わりに :

$kilos_array = [$secondkey];
if($kilos_array[0] == $kg){
   $precio = $secondvalue;
}

使用する :

if($secondkey == $kg){
   $precio = $secondvalue;
}

ここで完全な foreach を変更することをお勧めします。

foreach ($value['kilos_precio'] as $secondkey => $secondvalue) {
    $kilos_array = [$secondkey];
    if($kilos_array[0] == $kg){
        $precio = $secondvalue;
    }
}

に :

if(array_key_exists($kg,$value['kilos_precio'])){
    $precio = $value['kilos_precio'][$kg];
}
于 2013-03-06T13:11:09.673 に答える