PHP foreach 提供的参数无效
php foreach supplied argument not valid
我从 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');
然后它将打印出所有结果。我的问题是它返回了一个错误,说"Invalid argument supplied to foreach()"
,这就是我添加if(is_array))
条件的原因。如果我将此代码保留在index.php
页面中,它工作正常,但我将其移动到名为 phpScripts
的子文件夹中,它在那里不起作用。有什么帮助吗?
$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
不为空吗?
相关文章:
- $.Ajax投掷“;无效的参数"在IE9上
- 在 IE8 中接收无效参数
- fancydropdown js:IE8 中的参数无效
- 使用空媒体查询调用matchMedia失败,IE中的参数无效
- 单元测试输入参数无效的promise
- AngularJS IE11参数无效
- 数据表1.8.0添加服务器参数无效
- IE8 中的参数无效
- PHP foreach 提供的参数无效
- 管道“异步管道”的参数无效
- 使用 response.js 的参数无效,适用于 IE8
- SCRIPT87:IE 9、ASP.NET C#中的参数无效
- 数组缓冲区IE10-类型化的数组构造函数参数无效
- foreach参数无效
- 从url中删除参数无效
- 命令行参数无效,验证您正在使用的交换机
- chrome.runtime.sendMessage未捕获错误:要连接的参数无效
- IE中存在AJAX请求错误,参数无效
- 严重性:警告消息:为 foreach() 提供的参数无效 文件名:帮助程序/form_helper.php
- grant_type参数无效或缺少参数