标签: usort

使用返回不可预测的结果

我有一个从数据库返回的对象数组.未排序数组上的print_r如下所示:

Array
(
    [0] => stdClass Object
        (
            [nid] => 53162
            [title] => Kroger 'Giving Hope' Standee
            [path] => node/53162
        )

    [1] => stdClass Object
        (
            [nid] => 64185
            [title] => Kroger 'Giving Hope' Stanchion Sign
            [path] => node/64185
        )

    [2] => stdClass Object
        (
            [nid] => 52190
            [title] => Betty Crocker Kroger 'Giving Hope' Shipper
            [path] => node/52190
        )

    [3] => stdClass Object
        (
            [nid] => 53159
            [title] => Frito-Lay Kroger 'Giving Hope' Packaging
            [path] => node/53159
        )

    [4] …
Run Code Online (Sandbox Code Playgroud)

php sorting usort multidimensional-array

1
推荐指数
1
解决办法
69
查看次数

PHP:是什么原因导致usort()将数组转换为1?

无法理解为什么usort()将数组转换为1

这是SomeClass中我的排序回调方法的代码

protected $_sortKey = '';

public function setSortKey($keyname)
{
    $this->_sortKey = $keyname;
}

public function sortByKeyValue($a, $b)
{
  $key = $this->_sortKey;

  if ($a->$key == $b->$key) {
   return 0;
  }
  return ($a->$key < $b->$key) ? -1 : 1;
}
Run Code Online (Sandbox Code Playgroud)

这是进行排序的代码

$someObj = new SomeClass();
$someObj->setSortKey('name');

$sorted_stuff = usort($stuff_to_sort, array($someObj, 'sortByKeyValue'));
Run Code Online (Sandbox Code Playgroud)

在哪里$stuff_to_sort:

Array
(
    [0] => stdClass Object
        (
            [id] => 57
            [status] => ACTIVE
            [updated] => 2010-09-17T12:16:25Z
            [name] => Windows Server 2008 SP2 x64 - MSSQL2K8R2
        )

    [1] …
Run Code Online (Sandbox Code Playgroud)

php sorting usort

0
推荐指数
1
解决办法
147
查看次数

为什么usort在函数内部不起作用?

这是代码 - http://sandbox.onlinephpfunctions.com/code/ac3b31af0ce4d348f91957b314a8fa089cc8e779 仅当95字符串取消注释时才有效.

我花了半天时间从这里制作代码 - /sf/answers/1763497921/ - 工作.但由于某些原因,usort在函数内部不起作用.为什么?..

代码的相关部分:

function fs($array){

    usort($array, 'sortByOrder');

};

function sortByOrder($a, $b) {
    return $a['order_inside_level'] - $b['order_inside_level'];
};

fs($array);
// usort($array, 'sortByOrder'); // If to uncomment this string then array is ordered by 'order_inside_level'

var_dump($array);
Run Code Online (Sandbox Code Playgroud)

php usort

0
推荐指数
1
解决办法
1857
查看次数

usort排序降序而不是升序超过2个阵列

合并4个数组后,我使用usort通过Date对最终数组进行排序.然而,它以升序的方式排序,我需要它是Descending.当只有2个数组被合并时,我已经看到了降序排序的解决方案,但是没有超过2个的例子.

每个数组($ files,$ newfiles,$ comments和$ ratings)都有以下字段:ID,Title,Date和Type.我需要通过Date Descending对它们进行排序.这是我目前的代码:

    function dateSort($a,$b,$c,$d){
$dateA = strtotime($a['Date']);
$dateB = strtotime($b['Date']);
$dateC = strtotime($c['Date']);
$dateD = strtotime($d['Date']);


 return ($dateA-$dateB-$dateC-$dateD);

  //I HAVE ALSO TRIED REVERSING THE ORDER LIKE THIS BUT NO LUCK.  
 //THE SORTING IS STRANGE AND UN ORDERED WHEN I DO THIS:
 // return ($dateD-$dateC-$dateB-$dateA);

 }

    $result = array_merge($files, $newfiles,$comments,$ratings);

    usort($result, 'dateSort');
Run Code Online (Sandbox Code Playgroud)

php usort

0
推荐指数
1
解决办法
4221
查看次数

Usort,无需替换密钥PHP

我遇到了主要的usort()问题!:(因此,基本上我想按它们的值对数组进行排序。我希望这些值以以下顺序显示:白金,黄金,白银,青铜,完整,无,不完整。现在我可以很好地对其进行排序,但是我想保留其密钥(可能吗?),这是我的代码:

function compareMedals( $a, $b ) {
    $aMap = array(1 => 'Platinum', 2 => 'Gold', 3 => 'Silver', 4 => 'Bronze', 5 => 'Complete', 6 => 'None', 7 => 'Uncomplete');
    $aValues = array( 1, 2, 3, 4, 5, 6, 7);
    $a = str_ireplace($aMap, $aValues, $a);
    $b = str_ireplace($aMap, $aValues, $b);
    return $a - $b;
}
usort($list, 'compareMedals');
Run Code Online (Sandbox Code Playgroud)

那么可以在保留密钥的同时对它们进行排序吗?谢谢!:)

编辑

数组:

$array = array("post1" => 'Platinum', "Post2" => "Bronze, "Post3" = > Gold)
Run Code Online (Sandbox Code Playgroud)

应该输出:

"Post1" => 'Platinum',
"Post3" => 'Gold',
"Post2" …
Run Code Online (Sandbox Code Playgroud)

php arrays usort

0
推荐指数
1
解决办法
532
查看次数

usort函数结果错误

今天我提供了这个问题的答案,我写了一个脚本,但我发现出了问题.

这是第一个脚本

<?php 
$array = array( 
            "0" => array (
               "id" => 1204,
               "custom_price" => 33.1500    
            ),

            "1" => array (
               "id" => 1199,
               "custom_price" => 15.83  
            ),

            "2" => array (
               "id" => 1176,
               "custom_price" => 16.83  
            )
         );

usort($array, function($a, $b) {
    return $a['custom_price'] - $b['custom_price'];
});
echo "<pre>";
print_r($array);
Run Code Online (Sandbox Code Playgroud)

它的输出是(你也可以检查沙盒上的输出)

<pre>Array
(
    [0] => Array
        (
            [id] => 1176
            [custom_price] => 16.83
        )

    [1] => Array
        (
            [id] => 1199
            [custom_price] => 15.83 …
Run Code Online (Sandbox Code Playgroud)

php sorting usort

0
推荐指数
1
解决办法
349
查看次数

PHP 按字母顺序然后按数字对数组键进行排序

我正在尝试按键对数组(同时包含字母和数字键)进行排序,其中字母键将按字母顺序排列在前,然后按数字键排列。

尝试了ksort所有可用的标志,但这没有帮助。尝试了几个SO答案,但没有一个达到我的目的。这是我拥有的数组的示例..

$array = array(
    'Bat' => array(),
    'Dog' => array(),
    'Apple' => array(),
    'Cat' => array(),
    1 => array(),
    3 => array(),
    2 => array(),
    4 => array()
);  
Run Code Online (Sandbox Code Playgroud)

我需要这样排序:

$array = array(
    'Apple' => array(),
    'Bat' => array(),
    'Cat' => array(),
    'Dog' => array(),
    0 => array(),
    1 => array(),
    2 => array(),
    3 => array()
);  
Run Code Online (Sandbox Code Playgroud)

我从 SO 答案中了解到,它可能需要一个自定义函数来使用该usort函数进行排序。这就是我迷失的地方。任何有关正确方向的帮助或指导将不胜感激。

谢谢

php arrays sorting usort ksort

0
推荐指数
1
解决办法
4410
查看次数

标签 统计

php ×7

usort ×7

sorting ×4

arrays ×2

ksort ×1

multidimensional-array ×1