2016-04-08 96 views
1

我是新來的網絡編程,我有我的工作這樣一個複雜的職位這是var_dump($_POST)的結果,我使用gettype()函數來確定如果$arr數組中的值是另一個數組與否,我不太方便這樣的代碼的行爲,既沒有我在循環插入時遇到的問題php通過複雜的帖子循環

問題是如果有更聰明的技術循環內部像這樣複雜的帖子,其次如何趕上名稱,電話在二維數組,稱爲assistant(稱爲assistant['name'],assistant[phone]

<?php 

    $arr = array(
       "name"=> "mmmkkkk", 
       "phones"=> array(
            "01553338897" , 
            "09090909098" 
           ), 
       "address"=> "107 ostras., Germany", 
       "assistant"=> array(
             "name" => array(
                 "kmkkm", 
                 "komar" 
                ), 
             "phone"=> array(
                 "01043338897" , 
                 "09099090090" 
                ) 
            ) 
       ); 

    foreach($arr as $key => $p_value) 
    { 
      if(gettype($p_value)=="array") 
      { 
       echo $key.":"."</br>"; 

       foreach($p_value as $newp_value => $val) 
       { 
        if(gettype($val)=="array") 
        { 
         foreach($val as $vkey) 
         { 
          echo $vkey."</br>"; 
         } 
        } 
        else{echo $val."</br>";} 
       }  

      }else{echo $key.":".$p_value."</br>";} 
    } 

    ?> 

回答

1

您可以使用Recursive這樣的功能。

<?php 
    $arr = array(
       "name"=> "mmmkkkk", 
       "phones"=> array(
            "01553338897" , 
            "09090909098" 
           ), 
       "address"=> "107 ostras., Germany", 
       "assistant"=> array(
             "name" => array(
                 "kmkkm", 
                 "komar" 
                ), 
             "phone"=> array(
                 "01043338897" , 
                 "09099090090" 
                ) 
            ) 
       ); 

    function rec($arr) { 

     foreach($arr as $key => $p_value) 
     { 
      if (is_array($p_value)) { 
       rec($p_value); 
      } else { 
       echo $key.":".$p_value."\n"; 
      } 
     } 

    } 

    rec($arr); 

?> 
+0

ABC($ P_VALUE);應該是rec($ p_value); –

+0

Opps !!謝謝。 @RavinderReddy –

+0

感謝知道的強大,...如果有任何好的方法來處理助理陣列?通過助理['姓名'] ['電話'] 而不是每個列上的循環分開 –

0

想想遞歸

function walkThrough($array, $tabulation = 0) { 
    foreach($array as $key => $value) { 
     printf ('%s%s:', str_repeat(4*$tabulation, '&nbsp;')); 

     if (is_array($value)) walkThrough ($value, ($tabulation+1)); 
     else     printf('%s<br />', $value); 
    } 
} 
0

使用該遞歸函數

function recursivefunc($arr,$key =''){ 
if(is_array($arr)){ 
    foreach($arr as $k => $v){ 
     if (is_array($v) && !empty($v)) { 
      recursivefunc($v,$k); 
     } else { 
      $keys = ($key=='') ? $k : $key; 
      echo $keys.":".$v.'</br>'; 
     } 
    } 
} 
} 
recursivefunc($arr); 

輸出地說:

name:mmmkkkk 
phones:01553338897 
phones:09090909098 
address:107 ostras., Germany 
name:kmkkm 
name:komar 
phone:01043338897 
phone:09099090090 
+0

任何想法來管理助理陣列? –

+0

能否詳細介紹一下「管理助理陣列」 –