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

php多维数组获取第一个日期值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我再次需要帮助。我有一个数组,我需要提取最早的日权重值 编辑-编辑-编辑 array ( 3 => array ( 'id' => '20110211', 'Date' => '2011-02-11', 'Weight' => '195', ), 4 => array ( 'id' => '20110213', 'Date' => '2011-02-13', 'Weight' => '160', ), 6 =>

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

编辑-编辑-编辑


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',
  ),
)

排列(
3 => 
排列(
'id'=>'20110211',
“日期”=>“2011-02-11”,
“重量”=>“195”,
),
4 => 
排列(
'id'=>'20110213',
“日期”=>“2011-02-13”,
“重量”=>“160”,
),
6 => 
排列(
'id'=>'20110310',
“日期”=>“2011-03-10”,
“重量”=>“200”,
),
12 => 
排列(
'id'=>'20110301',
“日期”=>“2011-03-01”,
“重量”=>“55”,
),
21 => 
排列(
'id'=>'20110215',
“日期”=>“2011-02-15”,
“重量”=>“120”,
),
25 => 
排列(
'id'=>'20110322',
“日期”=>“2011-03-22”,
“重量”=>“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;

函数sortByDate($arr1,$arr2)
{
返回strcmp($arr1['Date'],$arr2['Date']);
}
//$arr是您的阵列
usort($weight_tracker,'sortByDate');
$earliest=$weight_tracker[0]['weight'];
回音$最早;

但是,由于我在这个页面上有一个表单,它在更新数组时更新数组,所以我收到了一条消息:致命错误:无法在中使用字符串偏移量作为数组

编辑->我已将其重新声明为字符串,因此出现错误!使用global and Include时要小心,因为一切都可能变得一团糟!PHP是宽容的,但这种“宽容”会在以后花费很多时间…:)

谢谢,
Peter

$minister=null;//具有最小权重的条目的数组索引。
foreach($idx=>$data的数组){
if($data['Weight']<$array[$minister]['Weight'])| |(is_null($minister))){
$minimate=$idx;//找到一个小权重,因此保存索引
}
}
echo$array[$minister]['Date'];

这是一种方法:

function filter_min($a, $b) {
  return ($a['Date'] < $b['date']) ? $a : $b;
}

$result = array_reduce($array, 'filter_min');
echo $result['Weight'];
函数过滤器\u min($a,$b){
回报($a['Date']<$b['Date'])?$a:$b;
}
$result=array_reduce($array,'filter_min');
echo$result['Weight'];

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

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

// $arr is your array
usort($arr, 'sortByDate');
$earliest = $arr[0];

function sortByDate ($arr1, $arr2)
{
   return strcmp($arr1['Date'], $arr2['Date']);
}

我注意到日期的顺序是相反的,最晚的日期先拉入,最早的日期最后拉入。会一直这样吗?如果是,您可以这样做:

$index = count($array) - 1;
$earliestdate = $array[$index]['Date'];
您还可以使用
array\u reverse()
反转数组,使第一个元素成为以前的最后一个元素

// $arr is your array
usort($arr, 'sortByDate');
$earliest = $arr[0];

function sortByDate ($arr1, $arr2)
{
   return strcmp($arr1['Date'], $arr2['Date']);
}

如果这是从MySQL中提取出来的,您还可以将查询更改为
orderby'Date'DESC
(或者是
ASC
,可以得到您想要的,我记不得了)

如果您在PHP中粘贴格式正确的数组,而不是var_dump()的结果,那么其他人复制您的代码并制定解决方案会更容易,这意味着我们必须自己输入它们,只是说……这可能是一个愚蠢的问题,但是,
$weight\u tracker
是否在某个点被意外地重新分配给字符串而不是数组?如果此代码是错误发生的地方,听起来好像是因为
$weight\u tracker
是一个字符串,而它应该是一个数组。在一个不相关的注释中,大数组中的数字键似乎是来自DB或其他东西的记录ID。这些需要保存吗?当前
usort()
将它们重新编号为0、1、2等。如果您需要保留原始ID号,我将为此更新我的答案。@Cups-我知道,但我不确定是否可以粘贴600行代码@Wiseguy-我正在查看代码,但我认为它没有重新分配给字符串。。。。对于这些东西,我只需要在最早的日期记录一个重量值(订单和ID并不重要,因为ID现在实际上是一个时间戳,但稍后将用于不同的东西)绝对正确-我有一个include,其中我将其重新声明为字符串:(我的错!!!这是100%有效的解决方案!事实上,它们不符合顺序,但如果可能/适用,我同意在DB查询中排序。啊,你是对的,没有注意到2011年5月2日是在2011年10月2日之前。这是可行的,但当页面更新时,我得到致命错误:无法在中使用字符串偏移量作为数组…我在中更新了它question@Peter我我看不出这段代码是如何导致这个错误的。它是你在它之后添加的东西吗?也许会有帮助。太好了…我的坏了-在一个包含的文件中,我声明它为字符串-谢谢你的帮助!