致命错误:不能将字符串偏移用作数组根本没有任何意义

时间:2013-08-23 17:43:52

标签: php

我在错误日志中出现致命错误,但由于某种原因它根本不会影响应用程序。这是正在运行的代码,因为它生成PHP错误没有任何意义。

for ($i = 1; $i <= $tournament['num_score_fields']; $i++) {

            $scoresArrayTemp = array(
                'score',
                'dist',
                'dateShot',
                'tens', 
                'nines'
                );

            foreach($scoresArrayTemp AS $val){
                if(empty($scores[$i][$val])){
                    $scores[$i][$val] = ''; 
                }
            }
}

此行生成错误

$scores[$i][$val] = ''; 

非常感谢任何帮助,谢谢!

根据答案1,我将代码更改为:

for ($i = 1; $i <= $tournament['num_score_fields']; $i++) {


            $scoresArrayTemp = array(
                'score'=>'',
                'dist'=>'',
                'dateShot'=>'',
                'tens'=>'', 
                'nines'=>''
                );

            if(!is_array($scores[$i])){
                $scores[$i] = $scoresArrayTemp;
            }

            echo $scores[$i]['score'];
}

在回显变量

时仍然在最后一行得到错误

2 个答案:

答案 0 :(得分:0)

$scores[$i]不是数组,因此PHP阻止您为$val处的索引赋值。你可能想要这个:

if(is_array($scores[$i]) && empty($scores[$i][$val])){
    $scores[$i][$val] = ''; 
}

答案 1 :(得分:0)

我对您的代码进行了一些更改,以检查问题所在:

<?php
$tournament['num_score_fields'] = 10;
for ($i = 1; $i <= $tournament['num_score_fields']; $i++) {

        $scoresArrayTemp = array(
            'score',
            'dist',
            'dateShot',
            'tens', 
            'nines'
            );

        foreach($scoresArrayTemp AS $val){
            if(empty($scores[$i][$val])){
                $scores[$i][$val] = ''; 
                echo 'a';
            }
        }
}

?>

输出为:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

老兄,这里没有错误......可能是由于其他原因造成的。再次从上到下检查代码或显示确切的错误。