如何使用PHP根据数组中的另一个值获取数组中的特定值

eiee3dmh  于 2023-02-07  发布在  PHP
关注(0)|答案(1)|浏览(148)

我在数组中获取正确的值时遇到了问题。我有一个数组,它的键是moq和costunit。如果给定的数量大于或等于moq,我想获取costunit。我有下面的数组。

Array
(
    [moq] => 1000
    [costunit] => 0.44
)
Array
(
    [moq] => 20000
    [costunit] => 0.33
)
Array
(
    [moq] => 30000
    [costunit] => 0.30
)

例1:如果给定数量为25000,则成本单位显示为0.33
示例2:如果给定数量为1230,则成本单位将显示为0.44

$get_prices = array(
  array( 'moq'=> 1000,  'costunit'=> 0.44 ),
  array( 'moq'=> 20000, 'costunit'=> 0.33 ),
  array( 'moq'=> 30000, 'costunit'=> 0.30 ),
);
$get_quantity = 30000;
foreach($get_prices as $get_price){

  if($get_price['moq'] >= $get_quantity){
    echo '<pre>';
        print_r($get_price['costunit']);
    echo '</pre>';
   }
}
g52tjvyc

g52tjvyc1#

我认为您所需要的只是循环中的一个break,以便在找到第一个有效值时停止

$get_prices = array(
  array( 'moq'=> 1000, 'costunit'=> 0.44 ),
  array( 'moq'=> 20000,'costunit'=> 0.33 ),
  array( 'moq'=> 30000, 'costunit'=> 0.30 )
);
$get_quantity = 1250;
foreach($get_prices as $get_price){

  if($get_price['moq'] >= $get_quantity){
    echo '<pre>';
        print_r($get_price['costunit']);
    echo '</pre>';
    break;
   }
}

结果

<pre>0.33</pre>

注意:我认为您的示例是错误的,请重新检查一下您所说的内容,因为这似乎正是代码所做的,除了在找到第一个有效值时没有停止之外
如果像你说的这些是规则
如果给定数量为25000,则成本单位将显示为0.33
如果给定数量为1230,则成本单位将显示为0.44
然后,这段代码将执行此操作,但是,您必须决定将$prev_cu设置为什么值,以便在$get_quantity小于数组第一次出现时的moq时获得正确的值。

$get_prices = array(
    array( 'moq'=> 1000, 'costunit'=> 0.44 ),
    array( 'moq'=> 20000,'costunit'=> 0.33 ),
    array( 'moq'=> 30000, 'costunit'=> 0.30 )
);

$get_quantity = 25000;
// set a costunit to use if qty is less than occ 0 of array
$prev_cu = 0;   

foreach ($get_prices as $get_price) {
    if ($get_quantity < $get_price['moq'] ) {
        break;
    }
    if ($get_quantity == $get_price['moq'] ) {
        $prev_cu = $get_price['costunit'];
        break;
    }
    $prev_cu = $get_price['costunit'];
}
echo $prev_cu;

相关问题