php foreach提供的参数无效

时间:2012-06-20 23:43:29

标签: 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' => $arrayRow['firstName'],
    );          
}

然后我搜索特定的朋友。例如,如果我想搜索朋友姓名 Osman ,我会输入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)并返回所有成员的idfirstName

P.S。我使用JavaScript来使用AJAX进行调用。

2 个答案:

答案 0 :(得分:0)

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

$friendArray[] = array(
    'id' => $arrayRow['id'],
    'firstName' => $arrayRow['firstName'],
);

这意味着您的数组已编入索引且有两个级别。

因此,正确的方法是:

foreach($array as $cur_element) {
    $id = $cur_element['id'];
    $firstName = $cur_element['firstName'];
}

答案 1 :(得分:0)

改变这个:

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

对此:

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

您确定$array 为空?