php – 通过参数传递对象的键
发布时间:2020-12-13 16:46:43 所属栏目:PHP教程 来源:网络整理
导读:我有这个代码: function cmp_asc($a,$b){ $ta = date_create_from_format('Y/m/d',$a['props']['t']); // Y/n/j si no tienen 0 inicial $tb = date_create_from_format('Y/m/d',$b['props']['t']); $interval = date_diff($ta,$tb); if($interval-days !=
我有这个代码:
function cmp_asc($a,$b){ $ta = date_create_from_format('Y/m/d',$a['props']['t']); // Y/n/j si no tienen 0 inicial $tb = date_create_from_format('Y/m/d',$b['props']['t']); $interval = date_diff($ta,$tb); if($interval->days != 0){ if($interval->invert == 1){ return 1; }else{ return -1; } }else{ return 0; } } $arr1 = array( 'props' => array('t' => '2012/05/20') ); $arr2 = array( 'props' => array('t' => '2012/05/21') ); $arr3 = array( 'props' => array('t' => '2012/04/14') ); $arr = array($arr1,$arr2,$arr3); uasort($arr,'cmp_asc'); 而且我想知道我是否可以通过参数传递[‘props’] [‘t’]. function cmp_asc($a,$b,$key){ $ta = date_create_from_format('Y/m/d',$a <-- $key -->); ... ... 我正在考虑变量变量,但我不太确定这是正确的变量. 解决方法
不是真的作为参数,因为你不是自己调用函数,但你可以使用
closures将其他变量传递给函数:
$key1 = 'props'; $key2 = 't'; uasort($arr,function ($a,$b) use ($key1,$key2) { $ta = date_create_from_format('Y/m/d',$a[$key1][$key2]); ... }); 这只是一个简单的例子.如果你需要动态密钥深度,这将需要更多的代码,沿着这些方向: function getValue(array $value,$key) { $keys = explode('.',$key); foreach ($keys as $k) { $value = $value[$k]; } return $value; } $arr = array('foo' => array('bar' => 'baz')); echo getValue($arr,'foo.bar'); 另一个想法是使用一个类,其用法如下: $cmp = new ComparisonClass; $cmp->key = 'props.t'; uasort($arr,array($cmp,'compare')); 我会让你弄清楚ComparisonClass的实现. 一个更好的解决方案可能是简单地标准化您要排序的数组的格式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |