【问题标题】:Breaking a MultiDimensional Array into a Single Dimension将多维数组分解为一维
【发布时间】:2013-02-18 16:36:51
【问题描述】:

我在 mySQL 中有一些字段,这些字段目前像这样存储在“标签”字段下

Shopping|Health & Beauty
Coffee|Shopping

我要做的是循环遍历它以创建一个单维数组并仅获取唯一值。

我的查询从 TABLE 中选择 DISTINCT 标记并像这样运行循环:

    while ($row_tags = mysql_fetch_assoc($r_tags)) { 
    $tags = $row_tags['tags'];
    $imploded_tags[] = explode("|",$tags);
    }

echo "<pre>";
print_r($imploded_tags);

print_r 的结果将其显示为多维数组。我试图以不同的方式重新爆炸并内爆它,但我无法获得任何成功。有没有办法可以将它创建为一维数组?并非所有标签都具有由 | 分隔的相同数量的标签,所以我似乎无法让它与我从另一个 StackOverflow 帖子中尝试过的功能一起使用。任何帮助将不胜感激!

输出:

Array
(
    [0] => Array
        (
            [0] => Shopping
            [1] => Health & Beauty

        )

    [1] => Array
        (
            [0] => Coffee
            [1] => Shopping
        )

【问题讨论】:

  • 那么您正在寻找的是系统中所有标签的唯一数组吗?你能展示你的 SQL 查询并解释你的数据库结构吗?您有可以从中获取此数据的标签表吗?

标签: php mysql arrays multidimensional-array


【解决方案1】:

试试这个

while ($row_tags = mysql_fetch_assoc($r_tags)) { 
$tags = $row_tags['tags'];
$tags = explode("|",$tags);
 foreach($tags as $v){
  $imploded_tags[] = $v;
 }
}

【讨论】:

    【解决方案2】:

    我会这样做:

             $imploded_tags = array_merge(explode("|",$tags), $imploded_tags);
        }
    
    $imploded_tags = array_unique($imploded_tags);
    echo "<pre>";
    print_r($imploded_tags);
    

    请参阅array_mergearray_unique 的手册。

    但是,我确实认为您没有使用正确的方式来存储标签;它们应该作为单独的值存储在单独的表中。

    【讨论】:

      【解决方案3】:

      当您从 MySQL 获取行时,实际上是首先在一个数组中获取一堆数据,这就是为什么您必须遍历它们的原因。

      使用您的 implode 函数,您将获取一堆字符串,然后获取另一个数组集,然后将其附加到外部数组。

      如果您真的想获得一个单维数组而不需要进行这种多维操作,那么您真正需要做的就是在该循环中使用另一个循环。

          $all_tags = array();
          while ($row_tags = mysql_fetch_assoc($r_tags)) { 
              $tags = $row_tags['tags'];
              $imploded_tags[] = explode("|",$tags);
      
              for($i = 0; $i < count($imploded_tags); $i++) {
                  $all_tags[] = $imploded_tags[$i]
              }
          }
          print_r($all_tags);
      

      【讨论】:

        猜你喜欢
        • 2014-11-25
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        • 1970-01-01
        • 2011-11-26
        • 1970-01-01
        • 2023-03-26
        • 2019-06-29
        相关资源
        最近更新 更多