【问题标题】:Echo multidimensional array fields in a for or foreach loop在 for 或 foreach 循环中回显多维数组字段
【发布时间】:2013-07-02 00:59:15
【问题描述】:

我构建了一个多维数组来存储一些值,并且能够删除重复项。

我现在想要做的是构建一个 for 或 foreach 循环以按键回显子数组值,例如 [0]、[1] 等,因为它似乎已将它们放在对我来说很好的行中。 Print_r 完全按照我的需要显示数据,但我需要遍历为每个集合构建一些表单按钮。

我使用我发现的一个函数从多维数组中生成唯一条目,如下所示:

function multi_unique($array) {
    foreach ($array as $k=>$na)
        $new[$k] = serialize($na);
    $uniq = array_unique($new);
    foreach($uniq as $k=>$ser)
        $new1[$k] = unserialize($ser);
    return ($new1);
}

初始化数组:

$unique_array = array(
    'username'=>array(),
    'user_id'=>array(),
    'weeknumber'=>array()
    );

在 while 循环中构建数组:

while($row = mysql_fetch_array($query))
{
$unique_array[] = array('username'=>$row['username'], 'user_id'=>$row['user_id'], 'weeknumber'=>$row['weeknumber']);
}

最后,我需要确保数组值是唯一的(由于数据库和查询限制,存在重复条目),在 while 循环之后我有:

print_r(multi_unique($unique_array));

在带有 print_r 的页面上产生这样的输出,从数据库中动态生成,并删除了重复的条目:

Array ( [username] => Array ( ) [0] => Array ( [username] => username1 [user_id] => 58 [weeknumber] => 1 ) [1] => Array ( [username] => username2 [user_id] => 21 [weeknumber] => 1 ) [3] => Array ( [username] => username3 [user_id] => 24 [weeknumber] => 1 )

就像我说的,一切都顺利进入数组,我只需要一个很好的方法将一切再次拉出,我需要用户名、user_id 和 weeknumber 在循环中回显。

感谢任何帮助!

是的,我知道 mysql 已被弃用,但现在改变它为时已晚 + 我正在处理其他人的现有代码。

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    您可以只循环遍历数组,循环的每次迭代都将成为unique_array中的下一个数组

    foreach($unique_array as $row){
       // Format this as desired
       echo $row['username'] . $row['user_id'] . $row['weeknumber'];
    }
    

    【讨论】:

    • 这也可以与 multi_unique() 函数结合使用吗?也许我可以先做类似 $unique_array = multi_unique($unique_array) 的事情?
    • 你的意思是array_unique()?为什么不让你的 SQL 返回唯一的行?
    • 哈!你是对的!我将我发现的这个 gem 添加到代码中并忘记了它。我会把它贴在上面。
    • DISTINCT 在这种情况下不起作用,因为行并不完全不同,我试过了,这导致我找到了这个解决方案,哈。
    • 对格式稍作修改,效果很好!
    【解决方案2】:

    你的初始化代码不正确,应该是:

    $unique_array = array();
    

    要提取所有内容,请使用:

    foreach ($unique_array as $user) {
      echo "Username: " . $user['username'] . "\n";
      echo "UserID: " . $user['user_id'] . "\n";
      echo "Week Number: " . $user['weeknumber'] . "\n";
      echo "\n";
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-08
      • 1970-01-01
      • 2015-06-02
      • 2016-06-06
      • 2018-07-13
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多