无法在Yii2

时间:2017-11-14 07:41:16

标签: php for-loop yii2

我的控制器中有一个变量$data。我得到以下结果

Array( [0] => 99 [1] => 100 [2] => 101 [3] => 102 [4] => 103)

现在我想通过使用for循环逐个获取单个条目。这个循环的主要目的是我想在DB table中插入这些值。

 if(Yii::$app->request->isAjax && Yii::$app->request->post())
    {
        $data = explode(',',$_POST['data']);

       for($i=0; $i<=count($data); $i++)
        {
            print_r($data[$i]);
        }
        //print_r($data);
    }
    else{
        echo 'no data';
    }
    exit();

当我运行这个时,我收到错误

  

500内部服务器错误   PHP注意'yii \ base \ ErrorException',消息'Undefined offset:5'

堆栈跟踪

Stack trace:
#0 E:\xampp\htdocs\inventory-
web\backend\controllers\OgpheaderController.php(170): yii\base\ErrorHandler-
&gt;handleError(8, &#039;Undefined offse...&#039;, 
&#039;E:\\xampp\\htdocs...&#039;, 170, Array)
#1 [internal function]: backend\controllers\OgpheaderController-
&gt;actionViewsetpdf(&#039;55&#039;)
#2 E:\xampp\htdocs\inventory-
web\vendor\yiisoft\yii2\base\InlineAction.php(57): 
call_user_func_array(Array, Array)
#3 E:\xampp\htdocs\inventory-
web\vendor\yiisoft\yii2\base\Controller.php(156): yii\base\InlineAction-
&gt;runWithParams(Array)
#4 E:\xampp\htdocs\inventory-web\vendor\yiisoft\yii2\base\Module.php(523): 
yii\base\Controller-&gt;runAction(&#039;viewsetpdf&#039;, Array)
#5 E:\xampp\htdocs\inventory-
web\vendor\yiisoft\yii2\web\Application.php(102): yii\base\Module-
&gt;runAction(&#039;ogpheader/views...&#039;, Array)
#6 E:\xampp\htdocs\inventory-
web\vendor\yiisoft\yii2\base\Application.php(380): yii\web\Application-
&gt;handleRequest(Object(yii\web\Request))
#7 E:\xampp\htdocs\inventory-web\backend\web\index.php(17): 
yii\base\Application-&gt;run()
#8 {main}</pre>

我搜索过此错误解决方案但找不到正确的答案。

任何帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

而不是for循环,请使用foreach:

foreach($data as $d)
{
    print_r($d);
}

确保您始终保持在数组的范围内

答案 1 :(得分:2)

 for($i=0; $i<count($data); $i++)
    {
        print_r($data[$i]);
    }

 for($i=0; $i<=count($data)-1; $i++)
    {
        print_r($data[$i]);
    }

foreach($data as $value)
{
print_r($value);
}

其中任何一个都可以使用

答案 2 :(得分:1)

将您的代码更改为

for($i=0; $i<count($data); $i++)
{
  print_r($data[$i]);
}

数组共有5个元素,以索引0开头,以4结尾,当您将计数与<=进行比较时,它会转到索引5