【问题标题】:echoing out two dimensional associative arrays in php在php中回显二维关联数组
【发布时间】:2016-06-29 18:01:53
【问题描述】:

我希望以这种格式回显数据

[0] - [名称][描述]
[1] - [名称][描述]
[2] - [名称][描述]

$options = array('guide_info' => $guide_info);

$guide_info = array( 'guide_name' => $guide_name, 
                     'guide_description' => $guide_description 
                   );

我创建了两个 foreach 循环来尝试呼出每个循环的名称和描述,如下所示:

foreach ($options as $key => $value) {
    foreach ($guide_info as $type => $info){
        $html .= $type . " " . $info . "\n";
    }
}

但我收到有关在第二个循环中为 foreach() 提供的无效参数的错误。

目前我的 print_r($options) 显示

Array ( [guide_name] => f 
        [guide_description] => fff 
        [0] => Array ( 
                       [guide_name] => fsss 
                       [guide_description] => sssss 
                     ) 
       )

我的回声打印

guide_name fsss 
guide_description sssss 
guide_name fsss 
guide_description sssss 
guide_name fsss 
guide_description sssss

我怎样才能回显 print_r 显示的正确信息?

【问题讨论】:

  • 不是在显示print_r正在显示的信息吗?我的意思是 guide_name 后跟 fsss,guide_description 后跟 sssss。这不对吗?怎么回事?
  • 另外我注意到你在上面创建了使用$guide_info$options 数组,但是你在它之后创建了$guide_info。我认为您应该将$guide_info 部分移到$options 部分上方。
  • 我的回声正在打印第二个瞬间 3 次。它跳过了 f 和 fff 中的第一个
  • 因为你把它包裹在一个与第二个循环无关的循环中。对于您的第二个循环输入,您应该使用第一个循环的值
  • @khuderm 是正确的。将foreach ($guide_info as $type => $info) 更改为foreach ($value as $type => $info)

标签: php arrays multidimensional-array associative-array


【解决方案1】:

使用递归函数以所需格式回显名称和描述值。

function process_array($arr, $counter){
    foreach($arr as $key => $value){
        if(is_array($value)){
            process_array($value, ++$counter);
        }else{
            if($key == "guide_name"){
                echo "[" . $counter . "] - [" . $value . "][";
            }else{
                echo $value . "]<br />";
            }
        }
    }
}

// Here $options is your original array
process_array($options, 0);

输出:

[0] - [f][fff]
[1] - [fsss][sssss]

【讨论】:

  • 谢谢!它可以满足我的需要
  • @Sophie.J 很高兴我能帮上忙。干杯! :-)
  • 嗨!只是一个简单的问题,我将如何允许用户编辑和删除特定选项?
  • @Sophie.J 这是一个非常不同的问题。请在 SO 上发布问题并在此处给我它的链接。
【解决方案2】:
$guide_info = array( 'guide_name' => 'guid name', 
                 'guide_description' => 'guid description',
               );
 $options = array('guide_info' => $guide_info); 

 foreach ($options as $key => $value) {
   foreach($value as $a => $b) {
echo $a," =",$b ;
 }
} 

或用于 print_r

foreach ($options as $key => $value) {
    print_r($value) ;
}

【讨论】:

    【解决方案3】:

    你为什么要把 $guide_info 放在 $options 中。如果你想要来自 $guide_info 的所有条目,你可以这样做-

        for($i = 0; $i < count($guide_info); $i++){
            $html .= $type . " " . $info . "\n";
        }
    

    -> 考虑到 $guide_info 是一个多维数组,例如 = array( [0] => 'guide_name' => $guide_name, 'guide_description' => $guide_description)

    如果由于某种原因 $guide_info 很重要,我建议它是一个索引数组而不是 assoc.. 希望你找到解决方案 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-16
      • 2016-12-27
      • 1970-01-01
      • 2012-05-16
      • 2011-10-05
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      相关资源
      最近更新 更多