【问题标题】:selecting only distinct values from an array仅从数组中选择不同的值
【发布时间】:2013-09-28 10:05:02
【问题描述】:

在这里,我有以下变量 $countries_all:

Array ( 
  [0] => stdClass Object 
      ( 
          [countries] => India,Afghanestan,Japan,South Africa
      ) 
  [1] => stdClass Object 
      ( 
          [countries] => Singapore,South Africa,India,Pakistan
      )
  [2] => stdClass Object 
      ( 
          [countries] => Japan,Australia,India
      ) 
)

但我需要创建仅包含唯一值的第二个数组 $countries:

Array ( 
  [0] => stdClass Object 
      ( 
          [countries] => India
      )
  [1] => stdClass Object 
      ( 
          [countries] => Afghanestan
      )
  [2] => stdClass Object 
      ( 
          [countries] => Japan
      )
  [3] => stdClass Object 
      ( 
          [countries] => South Africa
      )
  [4] => stdClass Object 
      ( 
          [countries] => Singapore
      )
  [5] => stdClass Object 
      ( 
          [countries] => Pakistan
      )
  [6] => stdClass Object 
      ( 
          [countries] => Japan
      )
  [7] => stdClass Object 
      ( 
          [countries] => Australia
      ) 
)

对于按 (,) 进行分割,我使用了以下方法

foreach ($countries_all as $list){
    $countrieslist=explode(',', $list->countries);
    foreach ($countrieslist as $uni_countries){
        echo $uni_countries;
    }
}

但是如何从上面的案例中获取唯一值。

谁能帮帮我

提前致谢。

EDIT1

这里我还有一个与上述问题相关的查询。

现在我得到了唯一值,

如何从数据库中获取唯一值的结果

例如, 我想要所有具有(如)国家为“印度”的结果

【问题讨论】:

  • 你从哪里得到$countries?应该是 $uni_countries 吗?
  • 对不起,这只是 $uni_countries

标签: php mysql loops foreach


【解决方案1】:

array_unique 函数正是您所寻找的。​​p>

$countries = array();
foreach ($countries_all as $list){
    $countrieslist=explode(',', $list->countries);
    foreach ($countrieslist as $country){
        $countries[] = $country;
    }
}
$countries = array_unique($countries);

【讨论】:

    【解决方案2】:
    $newlist = array();
    foreach ($countries_list as $list){
        $countrieslist=explode(',', $list->countries);
        foreach ($countrieslist as $uni_countries){
            echo $uni_countries;
            $newlist[] = $uni_countries){
        }
    }
    array_unique($newlist);
    

    【讨论】:

      【解决方案3】:
      $commasplit = function ($list) { return explode(',', $list->countries); };
      $countrieslist = array_unique(call_user_func_array('array_merge', array_map($commasplit, $countries_list)));
      

      【讨论】:

        【解决方案4】:

        你可以试试这个

        $countrieslist = array();
        foreach ($countries_all as $list){
            $countrieslist[] = explode(',', $list->countries);
        }
        $array = array_unique(array_reduce($countrieslist,'array_merge', array()));
        

        An Example.

        【讨论】:

          【解决方案5】:

          试试这个:

          $uniqueCountries = array();
          
          foreach ($countries_list as $list){
              $countrieslist=explode(',', $list->countries);
              foreach ($countrieslist as $country){
                  if (!in_array($country, $uniqueCountries)) {
                      //adding to list
                      $uniqueCountries[] = $country
                  } else {
                       echo $country, ' already in list', PHP_EOL;
                  }
              }
          }
          

          $uniqueCoutries 包含所有找到的 coutries,没有重复

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-30
            • 1970-01-01
            • 1970-01-01
            • 2021-12-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多