<?php
$p=array (
   "test" => 'home',
   'test2' => 'where',
   array (
    "born" => "wuxi",
    "name" => "jiangyin"
   ),
   array (
    "call"=>"234",
    "fax" => "234",
    "cell" => "123"
   )
  );
foreach($p as $key=>$values){
if(is_array($values))
foreach($values as $k=>$kvalue)
{
echo $k.'='.$kvalue.'<br>';
}
echo $key.'='.$values.'<br>';
}
?>
显示是
test=home
test2=where
born=wuxi
name=jiangyin
0=Array   //这里这样、
call=234
fax=234
cell=123
1=Array  //这里也是 谁执教下

解决方案 »

  1.   

    echo输出数组类型的数据就会出现这样的情况,楼主你这是二维数组,而你只判断了一层
      

  2.   

    关键是你判断的外面还有个echo $key.'='.$values.'<br>';呢,就是他输出的Array
      

  3.   

    $p=array (
       "test" => 'home',
       'test2' => 'where',
       array (
        "born" => "wuxi",
        "name" => "jiangyin"
       ),
       array (
        "call"=>"234",
        "fax" => "234",
        "cell" => "123"
       )
      );
    foreach($p as $key=>$values){
        if(is_array($values))
            foreach($values as $k=>$kvalue)
            {
                echo $k.'='.$kvalue.'<br>';
            }
        else{
            echo $key.'='.$values.'<br>';
        }
    }
      

  4.   

    为什么要多加一个else我是这样认为的 如果不成立就顺序执行下面的语句啊 好像else多余的啊
      

  5.   

    首先你的数组时二维数组,这个二维数组中每隔元素也许是一个数组也许是一个普通变量,所以就需要判断
    if(in_array()){//是数组那么就接着循环成单个的变量(也就是foreach懂循环)}else{//普通变量则直接输出
        //echo
    }这样每次循环中if和else只执行其一,但是如果你不加else而是直接将echo暴漏到外面那么每次循环都会执行echo,而echo所要输出的元素也许是一个数组,所以要加else