按键值检索数组项

时间:2011-11-27 01:06:09

标签: php arrays multidimensional-array

不知何故,我设法在下面创建了数组。现在已经创建了数组,有人可以解释我如何检索以下信息:

  • 元素总数;
  • 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
                    )
    
            )
    
    )
    

感谢。

4 个答案:

答案 0 :(得分: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 :(得分:1)

你可以这样做:

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

答案 2 :(得分:1)

你需要在周期中计算这一点,如前面所述:

<?
$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
?>

答案 3 :(得分:0)

可以通过遍历每个数组并对其count求和来检索元素的总数。您可以这样说:

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)