为什么在PHP数组中不使用foreach循环?

时间:2019-06-05 09:27:11

标签: php foreach syntax-error

我在用PHP创建数组时遇到了一些麻烦,我从JSON文件中提取数据并创建了要发布的数组。

我不太清楚为什么这个foreach循环不起作用。我在代码中看不到明显的语法错误。

错误:

  

PHP语法检查:解析错误:语法错误,第4行代码中出现意外的'foreach'(T_FOREACH),期望为')'   foreach($ w ['order'] ['something'] as $ field => $ value){

我创建了一个没有foreach循环的数组,并且看起来工作正常(如下)。

"Items" => array(
    array(
        "l_ref" => "888",
        "sku" => "888",
        "qty" => "QTY",
        "typ" => "4",
        "job_ref" => "3929"
    ),
    array(
        "l_ref" => "888",
        "sku" => "1323"
    )
)

这是与当前的foreach循环不兼容的代码。有什么明显的我想念的吗?

$orderData = array (
    "Order" => array(
        "Items" => array(
            foreach($w['order']['something'] as $field => $value) {
                if ($value['something'][1]['name'] == "id") {
                    array(
                        "something" => "something"
                    )
                }
            }
        )
    )
)

我期望代码根据某个值循环并提取项目。

  

错误:PHP语法检查:解析错误:语法错误,第4行代码中出现意外的'foreach'(T_FOREACH),期望为')'   foreach($ w ['order'] ['something'] as $ field => $ value){

1 个答案:

答案 0 :(得分:0)

长话短说,像这样的数组构造函数中不能有语句

它看起来应该更类似于:

<?php

$orderData = array (
    "Order" => array(
        "Items" => array()
    )
);

foreach($w['order']['something'] as $field => $value) {
    if ($value['something'][1]['name'] == "id") {
        $orderData['Order']['Items'] = array(
            "something" => "something"
        )
    }
}