php foreach提供的参数无效

php foreach提供的参数无效,php,javascript,mysql,foreach,Php,Javascript,Mysql,Foreach,我从mysql表中获取结果,并将每个单元格放入一个数组,如下所示: $sqlArray = mysql_query("SELECT id,firstName FROM members WHERE id='$id'"); while ($arrayRow = mysql_fetch_array($sqlArray)) { $friendArray[] = array( 'id' => $arrayRow['id'], 'firstName' => $arrayR

我从mysql表中获取结果,并将每个单元格放入一个数组,如下所示:

$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');
然后它会打印出所有的结果。我的问题是它返回了一个错误,说
“提供给foreach()的参数无效”
,这就是为什么我添加了
if(is_array))
条件。如果我将此代码保留在
index.php
页面中,它可以正常工作,但我将其移动到名为
phpscript
的子文件夹中,它在那里不起作用。有什么帮助吗

$output
未返回任何值,因为显然
$friendArray
不是数组。但我通过使用
print\r($friendArray)
验证了它的正确性,它返回了所有成员的
id
firstName


另外,我使用JavaScript来调用AJAX。

如果您的数组结构是这样的:

$friendArray[] = array(
    'id' => $arrayRow['id'],
    'firstName' => $arrayRow['firstName'],
);
这意味着您的数组已编制索引,并具有两个级别

因此,正确的方法是:

foreach($array as $cur_element) {
    $id = $cur_element['id'];
    $firstName = $cur_element['firstName'];
}
更改此项:

foreach($array as $i => $arr) {
为此:

foreach((array)$array as $i => $arr) {

你确定
$array
不是空的吗?

我想你的$array是空的,你能打印吗??foreach(null为$element)将在bigtime中失败。
提供给foreach()的无效参数非常清楚。
我也这么认为,但是print\r($friendArray)会返回成员的id和firstNames。如果数组不是null,$friendArray会变成$array吗?它们在foreach中使用的是哪一种?