根据值是否存在以及整数

时间:2015-12-04 21:25:18

标签: php arrays

我真的很难弄清楚如何对大型数组进行排序。

数组是属性数据。我需要使用两个关键数据来按顺序排列数组。他们是:

  • 卧室数量
  • 可用性状态

这是数组

的一个例子
[0]=>
  array(8) {
    ["location"]=>
    array(4) {
      ["street_name"]=>
      string(10) "Derby Road"
    }
    ["info"]=>
    array(3) {
      ["status"]=>
      string(9) "available"
    }
    ["specs"]=>
    array(1) {
      ["bedroom_number"]=>
      string(1) "7"
    }
  }

status密钥可以设置为letavailable或其他一些选项。我需要做的是使let的任何属性都落在数组的底部,但是在卧室数字顺序下降

所以,我猜这些是两条规则:

  • 属性必须始终显示在卧室编号中。因此,7间卧室应位于列表顶部,1间卧室应位于底部
  • '设'状态属性应始终是其卧室数中最低的,例如:

    7 bedroom property - available

    7 bedroom property - available

    7 bedroom property - let

    6 bedroom property - available

    7 bedroom property - let

    4 bedroom property - available

    3 bedroom property - let

我知道usort()的存在,但我不确定如何在函数中安排这种安排。

2 个答案:

答案 0 :(得分:2)

我认为您可以使用usort然后使用数组键进行排序。

也许此设置可以帮助您:

<script>
    var x = 0;

    function test(){  

        x++;    
        var degree  = x + 'deg';

        var elem = document.getElementById("gradient1");
        elem.style.background = 'linear-gradient(' + degree + 'red, orange)';    

        requestAnimationFrame(test);
    }

    requestAnimationFrame(test);

</script>

答案 1 :(得分:0)

您是否尝试过array_multisort函数?这是一个例子:

<?php
function array_orderby()
{
    $args = func_get_args();
    $data = array_shift($args);
    foreach ($args as $n => $field) {
        if (is_string($field)) {
            $tmp = array();
            foreach ($data as $key => $row)
                $tmp[$key] = $row[$field];
            $args[$n] = $tmp;
            }
    }
    $args[] = &$data;
    call_user_func_array('array_multisort', $args);
    return array_pop($args);
}
?>

已排序的数组现在位于函数的返回值中,而不是通过引用传递。

<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);

// Pass the array, followed by the column names and sort flags
$sorted = array_orderby($data, 'volume', SORT_DESC, 'edition', SORT_ASC);
?>
  

http://php.net/manual/en/function.array-multisort.php