原始数组
$sonuc['rec'][0]['m_unseen'] = 1;
$sonuc['rec'][0]['user_id'] = 234;
$sonuc['rec'][0]['id'] = 133;
$sonuc['rec'][0]['last_updated'] = date();
$sonuc['rec'][0]['user']['unseen'] = 0;
$sonuc['rec'][0]['user']['id'] = 234;
$sonuc['rec'][1]['m_unseen'] = 0;
$sonuc['rec'][1]['user_id'] = 234;
$sonuc['rec'][1]['id'] = 134;
$sonuc['rec'][1]['last_updated'] = date();
$sonuc['rec'][1]['user']['unseen'] = 0;
$sonuc['rec'][1]['user']['id'] = 234;
$sonuc['rec'][2]['m_unseen'] = 0;
$sonuc['rec'][2]['user_id'] = 234;
$sonuc['rec'][2]['id'] = 135;
$sonuc['rec'][2]['last_updated'] = date();
$sonuc['rec'][2]['user']['unseen'] = 0;
$sonuc['rec'][2]['user']['id'] = 234;
$sonuc['rec'][3]['m_unseen'] = 1;
$sonuc['rec'][3]['user_id'] = 234;
$sonuc['rec'][3]['id'] = 136;
$sonuc['rec'][3]['last_updated'] = date();
$sonuc['rec'][3]['user']['unseen'] = 0;
$sonuc['rec'][3]['user']['id'] = 234;
预期结果
$sonuc['rec'][0]['m_unseen'] = 1;
$sonuc['rec'][0]['user_id'] = 234;
$sonuc['rec'][0]['id'] = 133;
$sonuc['rec'][0]['last_updated'] = date();
$sonuc['rec'][0]['user']['unseen'] = 0;
$sonuc['rec'][0]['user']['id'] = 234;
$sonuc['rec'][1]['m_unseen'] = 1;
$sonuc['rec'][1]['user_id'] = 234;
$sonuc['rec'][1]['id'] = 136;
$sonuc['rec'][1]['last_updated'] = date();
$sonuc['rec'][1]['user']['unseen'] = 0;
$sonuc['rec'][1]['user']['id'] = 234;
$sonuc['rec'][2]['m_unseen'] = 0;
$sonuc['rec'][2]['user_id'] = 234;
$sonuc['rec'][2]['id'] = 134;
$sonuc['rec'][2]['last_updated'] = date();
$sonuc['rec'][2]['user']['unseen'] = 0;
$sonuc['rec'][2]['user']['id'] = 234;
$sonuc['rec'][3]['m_unseen'] = 0;
$sonuc['rec'][3]['user_id'] = 234;
$sonuc['rec'][3]['id'] = 135;
$sonuc['rec'][3]['last_updated'] = date();
$sonuc['rec'][3]['user']['unseen'] = 0;
$sonuc['rec'][3]['user']['id'] = 234;
我正在尝试将所有 m_unseen 值为0的元素移到数组的末尾。
我尝试过但无法获得预期的结果
function moveElement(&$array, $a, $b) {
$out = array_splice($array, $a, 1);
array_splice($array, $b, 0, $out);
}
$keys = array_keys(array_column($sonuc['rec'], 'm_unseen'), 0);
foreach ($keys as $key) {
moveElement($sonuc['rec'], $key, $say);
}
有什么主意吗?
答案 0 :(得分:1)
您可以将usort
函数与自定义回调一起使用来实现技巧
该函数有两个参数,即数组(通过引用传递)和带有两个元素的回调。您将比较回调中的两个元素。
在这里,我们简单地将一个“ m_unseen”减去另一个,因为它们是数字。如果是另一种类型,我们将需要返回一个正整数或负整数,或者如果它们等于则返回0,因为这就是usort函数的期望。
(( true * false ))
答案 1 :(得分:0)
*funcp
具有自定义排序功能就足够了:
usort
答案 2 :(得分:0)
您只需将具有非零值的m_unseen
移到前面,就可以在指针变量的帮助下将零值交换到后面。
<?php
$ptr = 0;
foreach($sonuc['rec'] as $key => $value){
if($value['m_unseen'] != 0){
$temp = $sonuc['rec'][$ptr];
$sonuc['rec'][$ptr++] = $value;
$sonuc['rec'][$key] = $temp;
}
}