当许多值为空时,如何重新排序数组中的元素?

时间:2015-12-17 07:30:34

标签: php arrays

我有一个列表数组

array([img1] => "", [img2] => "AJKH.png", [img3] => "", [img4] => "")
array([img1] => "", [img2] => "AJKH.png", [img3] => "IHGF.png", [img4] => "")

如果数组中的某些值为空,如何重新排序。想法如何?

array([img1] => "AJKH.png", [img2] => "", [img3] => "", [img4] => "")
array([img1] => "AJKH.png", [img2] => "IHGF.png", [img3] => "", [img4] => "")

2 个答案:

答案 0 :(得分:1)

建议的副本几乎相同,但这个看起来有点不同,因为它看起来像你想要保持你的键在相同的顺序(不保持键值关联),只是根据是否或移动值不是他们是空的。这应该这样做:

$new_array = array_fill_keys(array_keys($array), '');
foreach ($array as $value) {
    if ($value) {
        $new_array[key($new_array)] = $value;
        next($new_array);
    }
}

答案 1 :(得分:0)

一种简单的方法是拥有2个数组并合并它们(它会更好,而不是在计算方面进行交换)。

$empty=array();
$full=array();

foreach($yourArray  as $value){
if($value==""){
    $empty[]=$value;
}
else{
   $full[]=$value;
}
}

$result = array_merge($full, $empty);

另一种方法是编写一个算法来检查元素的位置(空)并交换它们。最后把所有的空白。