2014-06-25 58 views
0

這是我的代碼,以顯示我的關聯數組PHP - 爲什麼使用foreach顯示關聯數組會導致行間距?

$i=1; 
echo '<pre>'; 
foreach($bendetails as $bd) 
{ 
    $i=str_pad($i,'2','0',pad_left); 
    echo $i.'. '.$bd['cd2'].'<br />'; 
    echo $i.'. '.$bd['bban'].'<br />'; 
    $i++; 
} 
echo '</pre>'; 

當我使用print_r($bendetails);它的輸出是罰款

Array 
(
    [0] => Array 
     (
     [cd2] => A=Add/U=Update/D=Delete 
     ) 

    [1] => Array 
     (
      [bban] => Bank Account Number 
     ) 

    [2] => Array 
     (
      [cd2] => A=Add/U=Update/D=Delete 
     ) 

    [3] => Array 
     (
     [bban] => Bank Account Number 
     ) 

    [4] => Array 
     (
      [cd2] => A=Add/U=Update/D=Delete 
     ) 

    [5] => Array 
     (
      [bban] => Bank Account Number 
     ) 
) 

,當我使用上面提到foreach來顯示它,我不知道從哪裏,它顯示輸出像

01 A=Add/U=Update/D=Delete 
01 
02 
02 Bank Account Number 
03 A=Add/U=Update/D=Delete 
03 
04 
04 Bank Account Number 
05 A=Add/U=Update/D=Delete 
05 
06 
06 Bank Account Number 

任何人都可以請告訴是否有什麼缺失?什麼是造成這些額外的空間。我是PHP陣列的新手。提前致謝。

+1

你得到了什麼是預期的結果,具有顯示陣列結構。 – hek2mgl

+0

@ hek2mgl - 但它顯示額外的線條,我不希望他們......如果你已經低估了這個問題,請刪除投票。我已經說過,我是新的... –

+0

這與*無關新*。只要用你的眼睛。不過,@SyamMohan對你來說已經是正確的答案。 – hek2mgl

回答

0

因爲您總是打印兩個值,即使這些鍵不存在。 您應該檢查關鍵打印之前存在:

foreach ($bendetails as $bd) 
{ 
    $i=str_pad($i,'2','0', STR_PAD_LEFT); 
    if (array_key_exists('cd2', $bd)){ 
     echo $i.'. '.$bd['cd2'].'<br />'; 
    } 
    if (array_key_exists('bban', $bd)){ 
     echo $i.'. '.$bd['bban'].'<br />'; 
    } 
    $i++; 
} 
+0

謝謝@Christian P ..持續時間只有一分鐘嗎???我已經接受你的答案.. –

+1

你的答案正在工作.. –

0

正確使用str_pad()功能包括使用稱爲STR_PAD_LEFT一個PHP常數,而不僅僅是一個任意名稱pad_left所以填充命令應該是

$i=str_pad($i, '2', '0', STR_PAD_LEFT); 

也許這是造成不明原因的奇數間距?特別是因爲默認的填充是STR_PAD_RIGHT,這可能是你給的東西。

+0

沒有@RiggsFolly,那是沒有做任何改變 –

1

更改陣列格式像這樣

Array 
(
    [0] => Array 
    (
     [cd2] => A=Add/U=Update/D=Delete 
     [bban] => Bank Account Number 
    ) 

    [1] => Array 
    (
     [cd2] => A=Add/U=Update/D=Delete 
     [bban] => Bank Account Number 
    ) 

    [2] => Array 
    (
     [cd2] => A=Add/U=Update/D=Delete 
     [bban] => Bank Account Number 
    ) 

) 
+0

,我該怎麼做? –