【问题标题】:foreach loop is not working after print array打印数组后foreach循环不起作用
【发布时间】:2016-11-11 06:39:19
【问题描述】:

我尝试循环以下数组。

Array
(
    [mech_info] => Array
        (
            [make] => Amaka
            [0] => Array
                (
                    [year] => 2001
                    [model] => Array
                        (
                            [0] => Test one
                            [1] => test fix
                            [2] => Hamour
                            [3] => Imagica
                        )    
                )

            [1] => Array
                (
                    [year] => 2002
                    [model] => Array
                        (
                            [0] => Test Two
                        )    
                )

            [2] => Array
                (
                    [year] => 2014
                    [model] => Array
                        (
                            [0] => Test three
                        )    
                )

            [3] => Array
                (
                    [year] => 2015
                    [model] => Array
                        (
                            [0] => test four
                        )    
                )    
        )    
)

Array
(
    [mech_info] => Array
        (
            [make] => PRI
            [0] => Array
                (
                    [year] => 2005
                    [model] => Array
                        (
                            [0] => PRIMODE
                            [1] => Temp Pri
                            [2] => primode
                            [3] => yyy
                        )    
                )    
        )    
)

我想用 foreach 循环来做。我已经尝试过以下代码,但除了

之外没有显示任何内容
 `print_r($_POST['mech_show']);`.

       $all_make_model= $_POST['mech_show'];
        $all_make_model_data = $all_make_model['mech_info'];

    foreach ($all_make_model_data as $key => $mec_value) {
        echo "string";
        echo $meta_value['make'];
    }


    echo "<pre>";
    print_r($_POST['mech_show']);


    exit();

也无法进入foreach 并且数据无法循环打印。

给我错误

注意:未定义索引:mech_info

Warning: Invalid argument supplied for foreach() in

我也尝试过这种方式,但是

$all_make_model= $_POST['mech_show'];
$all_make_model_data = $_POST['mech_info'];

    foreach ($all_make_model as $key => $mec_value) {
        echo "<pre>";
        print_r($mec_value['make']);
        echo "</pre>";
    }

    echo "<pre>";
    print_r($all_make_model['mech_info']);

但它是showing Warning: Illegal string offset 'mech_info' in ..

我不知道我的代码是错误的还是我遗漏了任何东西,请帮助我。

谢谢

【问题讨论】:

  • 错字echo $meta_value['make']; 应该是echo $mec_value['make']
  • foreach ($all_make_model_data as $key =&gt; $mec_value) { echo "string"; echo $mec_value['make']; }
  • 你能 var_dump 你的 mech_show 吗?我试图创建你的对象,我得到了一个空数组数组
  • 好吧,让我来做吧。
  • @GiuServ 我尝试使用 var dump 它显示完整的数组。

标签: php arrays foreach


【解决方案1】:

一些更改您的foreach 循环。 $meta_value['make'] 应该是 $mec_value['make']

所以,

$all_make_model= $_POST['mech_show'];
//$all_make_model_data = $all_make_model['mech_info'];

foreach ($all_make_model as $key => $mec_value) {
    echo "<pre>";
    print_r($mec_value['make']);
    echo "</pre>";
}

【讨论】:

  • 我尝试了您的代码,但没有显示任何给定的空白。
  • 给了我类似通知的错误:未定义的索引:第 1258 行 /opt/lampp/htdocs/cync/wp-content/themes/twentysixteen/functions.php 中的 mech_info 警告:为 foreach 提供的参数无效( ) 在 /opt/lampp/htdocs/cync/wp-content/themes/twentysixteen/functions.php 第 1260 行
  • 并删除 $all_make_model_data = $all_make_model['mech_info']; 这一行。没必要。告诉我
  • 试试这个 echo $mec_value
  • @RazibAlMamun 我删除了该行,现在显示的错误是警告:为 foreach() 提供的参数无效
【解决方案2】:

试试

$all_array=array("mech_info"=>array("make"=>"Amaka",array("year"=>2001,"model"=>array("one","two","three")),array("year"=>2002,"model"=>array("one","two","three")),array("year"=>2003,"model"=>array("one","two","three")),array("year"=>2004,"model"=>array("one","two","three"))),array("mech_info"=>array("make"=>"PRI",array("year"=>2001,"model"=>array("one","two","three")))));

$all_make_model= $all_array;
//$all_make_model_data = $all_make_model['mech_info'];
//print_r($all_make_model['mech_info']);
foreach ($all_make_model['mech_info'] as $key => $mec_value) {
   if(is_numeric($key)) continue;
   echo $mec_value;    // output Amaka
}

exit();

【讨论】:

  • 无法正常工作:foreach() 提供的参数无效
【解决方案3】:

此代码可以正常工作。 为了迭代多个 mech_info,我在数组中添加了一个 leave,否则你会尝试创建具有相同索引的多个对象。

$p = Array('mech_show' => Array(
    0 => Array(
        'mech_info' => Array(
                'make' => 'Amaka',
                '0' => Array(
                        'year' => 2001,
                        'model' => Array(
                                0 => 'Test one',
                                1 => 'test fix',
                                2 => 'Hamour',
                                3 => 'Imagica'
                            )    
                    ),

                '1' => Array(
                        'year' => 2002,
                        'model' => Array(
                                0 => 'Test Two'
                            )    
                    ),

                '2' => Array(
                        'year' => 2014,
                        'model' => Array(
                                0 => 'Test three'
                            )    
                    ),

                '3' => Array(
                        'year' => 2015,
                        'model' => Array
                            (
                                0 => 'test four'
                            )    
                    )    
            )    
        ),
    1=>Array(
        'mech_info' => Array(
                'make' => 'PRI',
                '0' => Array(
                        'year' => 2005,
                        'model' => Array(
                                0 => 'PRIMODE',
                                1 => 'Temp Pri',
                                2 => 'primode',
                                3 => 'yyy'
                            )    
                    )    
            )    
        )
    )
);

$all_make_model= $p['mech_show'];

foreach($all_make_model as $all_make_model_data){
    foreach($all_make_model_data as $mech_info)
    var_dump($mech_info['make']);
}

你必须用 $_POST 替换 $p

【讨论】:

  • 无法正常工作:为 foreach() 提供的参数无效
  • 第一个还是第二个foreach?我做了一个简单的 php 页面,它正在工作。如果不是,你的对象是不同的,这就是为什么我要求一个 var_dump 的 'mech_show'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 1970-01-01
  • 2016-03-18
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
相关资源
最近更新 更多