2011-11-27 87 views
1

不知何故,我設法創建了下面的數組。現在該陣列已經創建,有人可以解釋我如何檢索這樣的信息:按鍵值檢索數組項目

  • 元素的總數;
  • 2011-11-18元素的總數;

    Array 
    (
        [0] => Array 
         (
          [0] => Array 
           (
            [2011-11-18 00:00:00] => C 
           ) 
    
          [1] => Array 
           (
            [2011-11-18 00:00:00] => I 
           ) 
    
          [2] => Array 
           (
            [2011-11-18 00:00:00] => S 
           ) 
    
         ) 
    
        [1] => Array 
         (
          [0] => Array 
           (
            [2011-11-22 00:00:00] => C 
           ) 
    
          [1] => Array 
           (
            [2011-11-22 00:00:00] => S 
           ) 
    
         ) 
    
    ) 
    

感謝。

回答

1

你可以這樣做:

 
foreach($yourArray as $key => $val) { 
    echo "Key is:".$key." and value is:".$val."<br />"; 
} 
+0

我想這個建議,但是這是我得到的結果是: 重點是:0和值:數組 主要是:1和值:數組 – DanielAttard

2

元素的總數

count($array_name, COUNT_RECURSIVE); 

計數的編號爲特定的鍵在你的情況下,你可以使用這個,我不知道是否有另一個更好的方法來做到這一點

$count = 0; 
    $date =date("Y-m-d H:i:s", mktime(0, 0, 0, '11', '22', '2011')); 
    foreach ($array_name as $arr) { 
     foreach ($arr as $inner) { 
      if (isset($inner[$date])) { 
       ++$count; 
      } 
     } 
    } 
+1

注意'計數($ ARRAY_NAME,COUNT_RECURSIVE)'* *在OP提供的情況下不會返回5 **。它將返回12.它有效地計算每個有鍵的元素,其中包括沿途的所有數組。 –

1

你需要在循環中調整這一點,如foreach在foreach:

<? 
$arr[0][0]["2011-11-18 00:00:00"] = "C"; 
$arr[0][1]["2011-11-18 00:00:00"] = "I"; 
$arr[0][2]["2011-11-18 00:00:00"] = "S"; 
$arr[1][0]["2011-11-22 00:00:00"] = "C"; 
$arr[1][1]["2011-11-22 00:00:00"] = "S"; 


// calc all 
$tot = 0; 
foreach ($arr as $a1) 
    foreach ($a1 as $a) 
    $tot ++; 
echo "Total: $tot\n<br />"; // echo 5 


//Find specific time elem 
$tot = 0; 
$d_ = "2011-11-18 00:00:00"; 
foreach ($arr as $a1) 
    foreach ($a1 as $a2) 
    foreach ($a2 as $a3_k=>$a3_v) 
     if ($a3_k == $d_) 
     $tot ++; 
echo "Total of $d_: $tot\n<br />"; // echo 5 
?> 
0

元素的總數可以通過每個陣列迭代和求和其count s內檢索。你可以這樣做:

function get_total_elements() { 
    $sum = 0; 
    foreach ($outer_arr as $inner_arr) { 
     foreach ($inner_arr as $date_arr) { 
      $sum += count($date_arr); 
     } 
    } 
    return $sum; 
} 

爲了獲得給定日期元素的總數量,你可以修改它稍微說:

function get_total_elements_for_date($m, $d, $y) { 
    date("Y-m-d H:i:s", mktime(0, 0, 0, $m, $d, $y)); 
    $sum = 0; 
    foreach ($outer_arr as $inner_arr) { 
     foreach ($inner_arr as $date_arr) { 
      if (isset($date_arr[$date])) { 
       $sum++; 
      } 
     } 
    } 
    return $sum; 
} 

然後你可以這樣調用函數(以2011年11月18日爲例):get_total_elements_for_date(11, 18, 2011)

+0

嗨喬納森 - 謝謝你試圖幫助我。不幸的是,我一直無法弄清楚你的答案。我仍在努力,但同時我發佈了另一個問題,可能會更好地解釋我的問題:http://stackoverflow.com/questions/8284302/php-count-items-in-a-multi-二維陣列 – DanielAttard