2012-05-10 55 views
1

爲什麼usort()排序數組?usort()警告雖然提交數組

if (is_array($tables)) { 
    usort($tables, 'sort'); 
} else { 
    echo "no array"; 
} 

我總是得到這樣的警告:

排序()預計參數1是數組,字符串給出

所以PHP認爲它的一個數組,但usort()

繼承人分類功能:

function sort($a, $b) { 
    return strlen($b) - strlen($a); 
} 
+1

你能爲我們做'var_dump($ tables)'真快嗎? – Sampson

+0

如何定義一個名爲「sort」的函數來開始? – deceze

回答

3

注意錯誤說sort() expects,而不是usort() expects。這是因爲PHP將解析回調爲usort作爲內置sort()方法(期望第一個參數爲數組),而不是您的sort()方法。

嘗試將您的方法重命名爲其他內容,如my_sort

function my_sort($a, $b) { 
    return strlen($b) - strlen($a); 
} 

if (is_array($tables)) { 
    usort($tables, 'my_sort'); 
} else { 
    echo "no array"; 
} 
+1

+1好眼padpadpad – JohnP

+0

我花了一段時間才注意到這一點。 –