PHP多维数组获取第一个日期值



我再次需要帮助。我有一个数组,我需要提取最早一天的权重值。

EDIT - EDIT - EDIT

<>之前 array ( 3 => array ( 'id' => '20110211', 'Date' => '2011-02-11', 'Weight' => '195', ), 4 => array ( 'id' => '20110213', 'Date' => '2011-02-13', 'Weight' => '160', ), 6 => array ( 'id' => '20110310', 'Date' => '2011-03-10', 'Weight' => '200', ), 12 => array ( 'id' => '20110301', 'Date' => '2011-03-01', 'Weight' => '55', ), 21 => array ( 'id' => '20110215', 'Date' => '2011-02-15', 'Weight' => '120', ), 25 => array ( 'id' => '20110322', 'Date' => '2011-03-22', 'Weight' => '250', ), )

我已经编辑了这个,这个代码可以工作:

<>之前 function sortByDate ($arr1, $arr2) { return strcmp($arr1['Date'], $arr2['Date']); } // $arr is your array usort($weight_tracker, 'sortByDate'); $earliest = $weight_tracker[0]['Weight']; echo $earliest;

但是因为我在这个页面上有一个表单,当数组更新时更新数组-我得到消息致命错误:不能在

中使用字符串偏移作为数组

EDIT ->我已经将其重新声明为字符串,因此出现了ERROR !在使用global和include时要小心,因为一切都可能变得一团糟!PHP是宽容的,但是这种"宽容"可能会在以后花费很多时间……:)

谢谢,
彼得。

您可以使用usort()自定义回调对数组进行排序,然后取第一个元素

// $arr is your array
usort($arr, 'sortByDate');
$earliest = $arr[0];
function sortByDate ($arr1, $arr2)
{
   return strcmp($arr1['Date'], $arr2['Date']);
}

这是一种方法:

function filter_min($a, $b) {
  return ($a['Date'] < $b['date']) ? $a : $b;
}
$result = array_reduce($array, 'filter_min');
echo $result['Weight'];

另一种方法是简单地遍历数组并找到最小的日期。

$smallest = null; // array index of entry with smallest weight.
foreach ($array as $idx => $data) {
    if (($data['Weight'] < $array[$smallest]['Weight']) || (is_null($smallest))) {
      $smallest = $idx; // found a small weight, so save the index
    }
}
echo $array[$smallest]['Date'];

我注意到日期的顺序是相反的,最晚的日期放在前面,最早的日期放在最后。会永远这样吗?如果是,你可以这样做:

$index = count($array) - 1;
$earliestdate = $array[$index]['Date'];

您也可以使用array_reverse()来反转数组并使第一个元素成为先前的最后一个元素。

如果这是从MySQL中拉进来的,你也可以将查询更改为ORDER BY 'Date' DESC(或者它是ASC,会得到你想要的,不记得了)

相关内容

  • 没有找到相关文章

最新更新