2017-04-06 18 views
-2

我有一個數組:鍵和動態生成的數組的值

 
Array 
(
    [0] => Array 
     (
      [Dated] => 2017-04-01 
      [Nadeem] => 1995 
      [NadeemKaat] => 40 
      [Ali] => 0 
      [AliKaat] => 0 
      [Usman] => 0 
      [UsmanKaat] => 0 
     ) 

    [1] => Array 
     (
      [Dated] => 2017-04-06 
      [Nadeem] => 0 
      [NadeemKaat] => 0 
      [Ali] => 4800 
      [AliKaat] => 96 
      [Usman] => 0 
      [UsmanKaat] => 0 
     ) 

    [2] => Array 
     (
      [Dated] => 2017-04-20 
      [Nadeem] => 0 
      [NadeemKaat] => 0 
      [Ali] => 0 
      [AliKaat] => 0 
      [Usman] => 2100 
      [UsmanKaat] => 42 
     ) 

) 

我想打印出這個數組的值是這樣的:

 
Date   | Nadeem | Ali | Usman 
2017-04-01 | 1995 |  | 
2017-04-06 |  | 4800 | 
2017-04-20 |  |  |2100 

我很迷惑在這裏如何處理這種陣列,請幫我出 我與簡單的foreach循環試圖

foreach ($stock as $key => $value) 
{ 
echo $key . $value; 
} 
+0

是什麼給你 – Akintunde007

+1

沒有足夠的嘗試來解決問題 –

+0

@Aki遇到PHP錯誤。數組到字符串的轉換 –

回答

1

試試這個:

if (!empty($stock)) { 
echo '<table><tr>'; 
foreach ($stock[0] as $key => $value) 
{ 
    echo '<th>' . $key . '</th>'; 
} 
echo '</tr>'; 

foreach ($stock as $value) 
{ 
    echo '<tr>'; 
    foreach ($value as $key2 => $field) { 
     echo '<td>' . $field . '</td>'; 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 
} 
+0

這是偉大的工作..但如果我想只打印所需的值?像我只想打印日期,Nadeem,阿里和Usman –

+0

你可以添加這樣的foreach條件: if(in_array($ key2,['Dated','Nadeem','Ali'])){ echo '​​'。 $字段。 ''; } –

+0

但名稱是動態的,任何名稱都可以在那裏..如何我可以處理這種情況? –

1

@Shafat艾哈邁德試試下面這一個:

<?php 
    $stock = array(
       array(
         "Dated" => "2017-04-01", 
         "Nadeem" => 1995, 
         "NadeemKaat" => 40, 
         "Ali" => 0, 
         "AliKaat" => 0, 
         "Usman" => 0, 
         "UsmanKaat" => 0 
        ), 

       array(
         "Dated" => "2017-04-06", 
         "Nadeem" => 0, 
         "NadeemKaat" => 0, 
         "Ali" => 4800, 
         "AliKaat" => 96, 
         "Usman" => 0, 
         "UsmanKaat" => 0 
        ), 

       array(
         "Dated" => "2017-04-20", 
         "Nadeem" => 0, 
         "NadeemKaat" => 0, 
         "Ali" => 0, 
         "AliKaat" => 0, 
         "Usman" => 2100, 
         "UsmanKaat" => 42 
        ) 
      ); 
?> 
<table align="center" border="1"> 
<tr> 
    <th>Date</th> 
    <th>Nadeem</th> 
    <th>Ali</th> 
    <th>Usman</th> 
</tr> 
<?php 
foreach ($stock as $value) { 
    ?><tr> 
     <th><?php echo $value["Dated"] ?></th> 
     <th><?php echo $value["Nadeem"] ?></th> 
     <th><?php echo $value["Ali"] ?></th> 
     <th><?php echo $value["Usman"] ?></th> 
    </tr><?php 
} 
+0

我不喜歡沒有給出任何解釋投票的用戶 –

+0

有數組與動態密鑰,所以硬編碼鍵像$ value [「Dated」]是錯誤的解決方案 –

+1

你有沒有正確地閱讀他的問題?我知道該數組將是動態的,但鍵名不變,只是在輸出中仔細閱讀他想要的內容,他首先提到了一個標題,這個標題與我一樣 –

0

嘗試內環

// print header 
foreach ($stock[0] as $key => $value) { 
    echo $key. ' | ' 
} 

// print data 
foreach ($stock as $item) 
{ 
    foreach ($item as $value) { 
     echo $value . ' | ' 
    } 
} 

,然後做一點點與<tr>改變|玩,<td>等等,如果你想要適當的表。

或者你可以使用

$header = array_keys($stock[0]); 
echo '<table><tr><th>'; 
echo implode('</th><th>', $header); 
echo '</th></tr>'; 

// print data 
foreach ($stock as $item) { 
    echo '<tr><td>'; 
    echo implode('</td><td>', $item); 
    echo '</td></tr>'; 
} 
echo '</table>'; 
0

試試這個:

foreach($stock as $data) { 
    echo $data['Dated'].' | '.($data['Nadeem'] ? $data['Nadeem'] : "") .' | '.$data['NadeemKaat'].' | '.$data['Ali'].' | '.$data['AliKaat'].' | '.$data['Usman'].' | '.$data['UsmanKaat'].'<br>'; 
} 
0
$keys = array_keys($some[0]); 
$theader = implode("\t", $keys); 
echo $theader; 
foreach ($some as $one) { 
    echo "\n"; 
    for ($i = 0; $i < count($keys); $i++) { 
     echo $one[$keys[$i]] . "\t"; 
    } 
} 

假設你的數據結構不會改變,$some是你上面給出的數組

輸出:

Dated  Nadeem NadeemKaat Ali AliKaat  Usman UsmanKaat 
2017-04-01 1995 40   0  0  0  0 
2017-04-06 0  0   4800 96  0  0 
2017-04-20 0  0   0  0  2100 42 
0

下面是示例程序。也許它會幫助你。

// user data can be dynamic 
$userData = array('Nadeem', 'Ali', 'Usman'); 

// tblRows data can also be dynamic 
$tblRowsData = array(
     '2017-04-01' => array('Nadeem'=>1995, 'Ali'=>'', 'Usman'=>''), 
     '2017-04-06' => array('Nadeem'=>'', 'Ali'=>4800, 'Usman'=>''), 
     '2017-04-20' => array('Nadeem'=>'', 'Ali'=>'', 'Usman'=>2100) 
    ); 

echo "<table border=1>"; 
    echo "<tr>"; 
     echo "<td>Date</td>"; 
     foreach ($userData as $key => $value) { 
      echo "<td>$value</td>"; 
     } 
    echo "</tr>"; 


    foreach ($tblRowsData as $key => $value) { 
     echo "<tr>"; 
      echo "<td>$key</td>"; 

      foreach ($userData as $key1 => $value1) { 
       echo "<td>".$value[$value1]."</td>"; 
      } 
     echo "</tr>"; 
    } 
echo "</table>"; 
0

有點狗屎編碼,快速的書面解決方案)))

$data = []; 
foreach($input as $value) { 
    foreach($value as $person => $count) { 
     if($person !== 'Dated') { 
      $data[$value['Dated']][$person] = $count; 
     } 
    } 
} 

if(!$data) { 
    die('empty'); 
} 

$persons = array_keys(reset($data)); 


$html = '<table border="1"><thead> 
    <th>Date</th>'; 

foreach($persons as $key) { 
    $html .= "<th>{$key}</th>"; 
} 
$html .= '</thead><tbody>'; 

while($temp = array_splice($data, 0, 1)) { 
    $date = array_keys($temp)[0]; 
    $html .= "<tr><td>".$date."</td>"; 
    foreach($persons as $name) { 
     $val = isset($temp[$date][$name]) ? $temp[$date][$name] : '-'; 
     $html .= "<td>".$val."</td>"; 
    } 
    $html .= "</tr>"; 
} 
$html .= '</tbody></table>'; 
die($html); 

當輸入HTML類似

$input = [ 
    [ 
     'Dated' => '2017-04-01', 
     'Nadeem' => 1995, 
     'NadeemKaat' => 40, 
     'Ali' => 0, 
     'AliKaat' => 0, 
     'Usman' => 0, 
     'UsmanKaat' => 0 
    ], 
    [ 
     'Dated' => '2017-05-11', 
     'Nadeem' => 123, 
     'NadeemKaat' => 40, 
     'Ali' => 3, 
     'AliKaat' => 0, 
     'Usman' => 0, 
     'UsmanKaat' => 0 
    ] 

]; 

輸出: enter image description here