PHP自定义排序

标签 php

我正在尝试对一组值进行排序。

数组中的可能值为 'neg_infinity',... {real numbers},.., 'infinity'

<?php
$a = array(
  array('column' => 3),
  array('column' => -1),
  array('column' => 1),
  array('column' => .1),
  array('column' => 2),
  array('column' => 'infinity'),
  array('column' => 'neg_infinity'),
  array('column' => 'infinity'),
);

我要:

    $a = array(
      array('column' => 'neg_infinity'),
      array('column' => -1),
      array('column' => .1),
      array('column' => 1),
      array('column' => 2),
      array('column' => 3),
      array('column' => 'infinity'),
      array('column' => 'infinity'),
    );

我一直在研究 uasort .

有人能解决他的问题吗?


试驾

<?php
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    if ($a == 'neg_infinity') {
        return -1;
    }
    if ($a == 'infinity') {
        return 1;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array('a' => 'infinity', 'b' => 8, 'c' => -1,'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4, 'd' => 'neg_infinity');


uasort($a, 'cmp');


var_dump($a);

最佳答案

将其用于您的排序功能:

function cmp($a, $b) {
    if ($a == 'neg_infinity') {
       return -1
    }
    if ($a == 'infinity') {
       return 1
    }
    return ($a < $b ? -1 : 1)
}

关于PHP自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7262783/

相关文章:

PHP session导致varnish不缓存

使用 PDO 准备 () 的 PHP SQL 查看计数器

php - 如何检查用户是否已经喜欢 facebook 页面?

javascript - 如何在按钮单击时使用 Javascript 发布 MySql 行变量

php - 将变量从 JQUERY 传递到 PHP 无法正常工作(未识别的索引)

php - 动态增加的可行性。数据库中的表和行

php - Google App Engine 启动器在部署图像文件时抛出 ascii 编解码器错误

php - 让用户呈现自己的 SVG 文件的安全隐患

javascript - 基于类的点击事件在 10 行后无响应 - 数据表

php - 如何使用两个表单并提交一次?