我從一個MySQL表得到結果,並把每個單元到一個數組如下:PHP的foreach提供的參數無效
$sqlArray = mysql_query("SELECT id,firstName FROM members WHERE id='$id'");
while ($arrayRow = mysql_fetch_array($sqlArray)) {
$friendArray[] = array(
'id' => $arrayRow['id'],
'firstName' => $arrayRow['firstName'],
);
}
然後我做了一個特定的朋友搜索。例如,如果我想搜索一個朋友的名字奧斯曼,我會鍵入和o
,它會返回給我所有以字母o
開頭的結果。這裏是我的代碼爲:
function array_multi_search($array, $index, $pattern, $invert = FALSE) {
$output = array();
if (is_array($array)) {
foreach($array as $i => $arr) {
// The index must exist and match the pattern
if (isset($arr[$index]) && (bool) $invert !== (bool) preg_match($pattern, $arr[$index])) {
$output[$i] = $arr;
}
}
}
return $output;
}
$filtered = array_multi_search($friendArray, 'firstName', '/^o/i');
然後它會打印出所有的結果。我的問題是,它返回一個錯誤,說"Invalid argument supplied to foreach()"
,這就是爲什麼我添加if(is_array))
條件。如果我在index.php
頁面中保留此代碼,但我將它移動到名爲phpScripts
的子文件夾並且它在那裏不起作用,它工作正常。任何幫助?
$output
沒有返回任何值,因爲顯然$friendArray
不是數組。但我確認它是通過使用print_r($friendArray)
並返回所有成員的id
和firstName
。
P.S.我使用JavaScript來使用AJAX進行調用。
我認爲你的$數組是空的,你可以print_r($ array); ?? foreach(null爲$ element) 將會失敗bigtime。 –
'提供給foreach()的無效參數很清楚 – Norse
我認爲還有print_r($ friendArray)返回成員的id和firstName – lomas09