usort返回未定义的索引

时间:2010-12-05 14:38:51

标签: php

我有一个名为“士兵”的多维数组:

Array
(
    [0] => Array
        (
            [name] => Saiga 20k Semi
            [target] => 100
            [star] => gold
        )

[1] => Array
    (
        [name] => SVU Snaiperskaya Short
        [target] => 85
        [star] => gold
    )

[2] => Array
    (
        [name] => Type 88 Sniper
        [target] => 56
        [star] => gold
    )

我正在尝试按“目标”值对数组进行排序。我正在使用:

usort($soldier,'compare_target');

function compare_target($x,$y)
{
    if($x['target'] == $y['target'])
    {
        return 0;
    }
    elseif($x['target'] < $y['target'])
    {
        return 1;
    }
    else
    {
        return -1;
    }
}

但是PHP抛出以下错误:“未定义的索引:目标”为函数内的2行,有什么想法吗?

2 个答案:

答案 0 :(得分:4)

function compare_target($x,$y)
{
    if ( !(isset($x['target']) && isset($y['target'])) ) 
        return 0;

    if ($x['target'] == $y['target'])
        return 0;
    elseif ($x['target'] < $y['target'])
        return 1;
    else
        return -1;
}

假设某些东西存在,这总是很糟糕的风格。如果你想使用$x['target'],你必须检查它是否有效,或者你有一个挥之不去的bug。

答案 1 :(得分:1)

对不起伙计我按照建议在函数内部进行了一些$ x和$ y的转储,由于我自己的错,这是$ soldier中的一些数组元素的问题,我会删除这个问题,抱歉浪费你的时间!!