在foreach循环中存储唯一值

时间:2020-08-24 08:49:57

标签: php

我正在尝试获取foreach循环的不同值的id值,但我对此却感到困惑。

$revenue = array('pseudo1', 'pseudo2');

foreach ($revenue as $value) {
    if (!$revenue_type) {
        $st = getValueDescription($value);
        foreach ($st as $stype) {
            $tpe[] = $stype->id;
        }
        $rev[$value] = $tpe;
    }
}

当我转储$rev时,这就是我得到的

array (size=1)
  0 => 
    array (size=3)
      'pseudo1' => 
        array (size=2)
          0 => string '9' (length=1)
          1 => string '19' (length=2)
      'pseudo2' => 
        array (size=4)
          0 => string '9' (length=1)
          1 => string '19' (length=2)
          2 => string '1' (length=1)
          3 => string '35' (length=2)

我真正期望的是

array (size=1)
  0 => 
    array (size=3)
      'pseudo1' => 
        array (size=2)
          0 => string '9' (length=1)
          1 => string '19' (length=2)
      'pseudo2' => 
        array (size=4)
          2 => string '1' (length=1)
          3 => string '35' (length=2)

我需要我的$rev的结果包含$value作为键,但是$tpe的先前值会在每次迭代中不断累加,我不知道如何实现。

1 个答案:

答案 0 :(得分:0)

这能解决您的问题吗?

$revenue = array('pseudo1', 'pseudo2');
$uniqueValues = [];

foreach ($revenue as $value) {
    if (!$revenue_type) {
        $st = getValueDescription($value);
        $tpe = [];
        foreach ($st as $stype) {
            if (!in_array($stype->id, $uniqueValues)) {
                $tpe[] = $stype->id;
                $uniqueValues[] = $stype->id;
            }
        }
        $rev[$value] = $tpe;
    }
}

$ uniqueValues保存已经添加到$ rev变量中的IDS,并且$ tpe在每次迭代后都为空