PHP:非法字符串偏移量-但它是一个数组,并且密钥存在
“非法字符串偏移”的帖子太多了,但我没有找到任何解决办法。也许有人可以看看我的代码:PHP:非法字符串偏移量-但它是一个数组,并且密钥存在,php,Php,“非法字符串偏移”的帖子太多了,但我没有找到任何解决办法。也许有人可以看看我的代码: function neue($pv){ <== LINE 365 echo "<pre>"; print_r($pv); echo "</pre>"; if (is_array($pv)){ echo "IS ARRAY"; } if (strlen($pv["Speichern"
function neue($pv){ <== LINE 365
echo "<pre>";
print_r($pv);
echo "</pre>";
if (is_array($pv)){
echo "IS ARRAY";
}
if (strlen($pv["Speichern"])>0){ <== LINE 372
save();
}
}
我检查它是否为arry,输出是否为:
IS数组
那么,为什么要这样做:
if (strlen($pv["Speichern"])>0){
抛出:
警告:中的字符串偏移量“speichen”非法
/webseiten/save.php在线
372
编辑:
这是第372行:
[setid] =>
我之前已经打印出数组$pv,并且我已经检查过它是一个数组。函数调用和错误行之间没有其他行。我已经发布了所有代码行
编辑:
var_dump的结果($pv[“Speichen”]);是:
字符串(9)“Speichen”
编辑发现的问题:
我发现了问题。未设置变量setid
function neue($pv){
echo "<pre>";
print_r($pv);
echo "</pre>";
if (is_array($pv)){
echo "IS ARRAY";
}
$pv["setid"] = "foobar";
if (strlen($pv["Speichern"])>0){
save();
}
}
如果我将代码更改为:
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
函数neue($pv){
回声“;
function neue($pv){ //<== LINE 365
echo "<pre>";
print_r($pv);
echo "</pre>";
if (is_array($pv)){
echo "IS ARRAY";
}
foreach($pv as $pv){
if (strlen($pv["Speichern"])>0){ //<== LINE 372
save();
}
}
}
印刷费(pv);
回声“;
function neue($pv){ //<== LINE 365
echo "<pre>";
print_r($pv);
echo "</pre>";
if (is_array($pv)){
echo "IS ARRAY";
}
foreach($pv as $pv){
if (strlen($pv["Speichern"])>0){ //<== LINE 372
save();
}
}
}
if(is_阵列($pv)){
回波“是阵列”;
function neue($pv){ //<== LINE 365
echo "<pre>";
print_r($pv);
echo "</pre>";
if (is_array($pv)){
echo "IS ARRAY";
}
foreach($pv as $pv){
if (strlen($pv["Speichern"])>0){ //<== LINE 372
save();
}
}
}
}
$pv[“setid”]=“foobar”;
如果(strlen($pv[“speichen”])>0{
save();
}
}
代码运行时没有任何异常。但我不知道为什么这会导致“Speichen”的错误。可能是PHP中的错误?foreach构造提供了一种在数组上迭代的简单方法。foreach仅适用于数组和对象,当您尝试在具有不同数据类型的变量或未初始化的变量上使用它时,它将发出错误。有两种语法: 试试这个
函数neue($pv){//0){//372行的/webseiten/save.php中的代码是什么?
?您可能没有定义$pv[“Speichern”]
。请尝试打印出$pv
数组。这应该可以工作。您确定定义了$pv[“Speichern”]
?因为你的代码似乎是正确的。正如你在打印结果中看到的那样,“Speichern”是在数组中定义的$pv
是一个字符串。有了这段代码,就永远不会发生。发布一个MCVE,然后寻找一些愚蠢的事情(你编辑的文件正确吗?)。听起来很明显,但是var\u dump($pv[“Speichern”])是什么呢
给你。同时尝试用单引号替换双引号,可能不会有什么改变,但可能。。。