PHP函数根据条件返回数组

时间:2021-03-26 17:39:10

标签: php arrays

我正在尝试修复我的公司在我加入之前委托的第三方 wordpress 插件,现在该第三方公司没有响应/不愿意提供帮助。我在 WP 网站上有一个表格,它从下拉菜单中获取信息,然后根据某些参数使用它来计算客户需要哪种产品。我有一个应该采用变量的计算函数,根据该变量获取数组信息,然后根据该信息进行计算:

function calculation($d){
    
    //$wind = pW($d['windSpeed']);
    
    $pad_data = anchor($d['site']);
    
    //if($d['site'] == "concrete"){
        $da = [];
        foreach($pad_data as $key => $value){
            foreach($value as $k => $v){
                if($d['site'] == "ground" && strpos($k,"concrete") !== false){
                    continue;
                }elseif($d['site'] == "concrete" && strpos($k,"ground") !== false){
                    continue;
                }
                $foi = foi($v,$d);
                if($foi > 1){
                    if($k == "noanchor"){
                        $de[] = $key." Pad with ".$v['nanchor']." anchor";    
                    }else{
                        $de[] = $key." Pad with ".$v['nanchor']." ".$k." anchor";    
                    }
                    
                    //print_r($d);
                    
                    return json_encode($de);
                }
            }
        }
        
    //}
    
    //print_r($da);
    // foreach($da as $r =>){
    //     if($r)
    // }
    
} 

但是它总是返回相同的回复。锚函数如下所示:

function anchor(){
    
    $array[36] = [
                    "noanchor" => [
                                        "lpad" => 36,
                                        "hpad" => 4,
                                        "wpad" => 162,
                                        "wanchor" => 205,
                                        "nanchor" => 0,
                                        "apw" => 162
                                    ],
                    "ground_1"  =>  [
                                        "lpad" => 36,
                                        "hpad" => 4,
                                        "wpad" => 162,
                                        "wanchor" => 205,
                                        "nanchor" => 2,
                                        "apw" => 572
                                    ],
                    "ground_2"  =>  [
                                        "lpad" => 36,
                                        "hpad" => 4,
                                        "wpad" => 162,
                                        "wanchor" => 205,
                                        "nanchor" => 4,
                                        "apw" => 982
                                    ],
                    "concrete"  =>  [
                                        "lpad" => 36,
                                        "hpad" => 4,
                                        "wpad" => 162,
                                        "wanchor" => 232,
                                        "nanchor" => 4,
                                        "apw" => 1092.4
                                    ]                
                ];
                
    $array[40] = [
                    "noanchor" => [
                                        "lpad" => 40,
                                        "hpad" => 4,
                                        "wpad" => 200,
                                        "wanchor" => 205,
                                        "nanchor" => 0,
                                        "apw" => 200
                                    ],
                    "ground_1"  =>  [
                                        "lpad" => 40,
                                        "hpad" => 4,
                                        "wpad" => 200,
                                        "wanchor" => 205,
                                        "nanchor" => 2,
                                        "apw" => 610
                                    ],
                    "ground_2"  =>  [
                                        "lpad" => 40,
                                        "hpad" => 4,
                                        "wpad" => 200,
                                        "wanchor" => 205,
                                        "nanchor" => 4,
                                        "apw" => 1020
                                    ],
                    "concrete"  =>  [
                                        "lpad" => 40,
                                        "hpad" => 4,
                                        "wpad" => 200,
                                        "wanchor" => 232,
                                        "nanchor" => 4,
                                        "apw" => 1130
                                    ]                
                ];
                
    return $array;
    
}

并且当我输入 var_dump(anchor());print_r(anchor()); 时,无论我传递什么参数,它总是给出相同的答复。这些功能:

var_dump(anchor($array[40]));
var_dump(anchor([36],['noanchor']));

两者都给出相同的答复:

array (size=2)
  36 => 
    array (size=4)
      'noanchor' => 
        array (size=6)
          'lpad' => int 36
          'hpad' => int 4
          'wpad' => int 162
          'wanchor' => int 205
          'nanchor' => int 0
          'apw' => int 162
      'ground_1' => 
        array (size=6)
          'lpad' => int 36
          'hpad' => int 4
          'wpad' => int 162
          'wanchor' => int 205
          'nanchor' => int 2
          'apw' => int 572
      'ground_2' => 
        array (size=6)
          'lpad' => int 36
          'hpad' => int 4
          'wpad' => int 162
          'wanchor' => int 205
          'nanchor' => int 4
          'apw' => int 982
      'concrete' => 
        array (size=6)
          'lpad' => int 36
          'hpad' => int 4
          'wpad' => int 162
          'wanchor' => int 232
          'nanchor' => int 4
          'apw' => float 1092.4
  40 => 
    array (size=4)
      'noanchor' => 
        array (size=6)
          'lpad' => int 40
          'hpad' => int 4
          'wpad' => int 200
          'wanchor' => int 205
          'nanchor' => int 0
          'apw' => int 200
      'ground_1' => 
        array (size=6)
          'lpad' => int 40
          'hpad' => int 4
          'wpad' => int 200
          'wanchor' => int 205
          'nanchor' => int 2
          'apw' => int 610
      'ground_2' => 
        array (size=6)
          'lpad' => int 40
          'hpad' => int 4
          'wpad' => int 200
          'wanchor' => int 205
          'nanchor' => int 4
          'apw' => int 1020
      'concrete' => 
        array (size=6)
          'lpad' => int 40
          'hpad' => int 4
          'wpad' => int 200
          'wanchor' => int 232
          'nanchor' => int 4
          'apw' => int 1130

print_r(anchor([36],["noanchor"]));print_r(anchor(40));

两者都给出相同的输出:

Array ( [36] => Array ( [noanchor] => Array ( [lpad] => 36 [hpad] => 4 [wpad] => 162 [wanchor] => 205 [nanchor] => 0 [apw] => 162 ) [ground_1] => Array ( [lpad] => 36 [hpad] => 4 [wpad] => 162 [wanchor] => 205 [nanchor] => 2 [apw] => 572 ) [ground_2] => Array ( [lpad] => 36 [hpad] => 4 [wpad] => 162 [wanchor] => 205 [nanchor] => 4 [apw] => 982 ) [concrete] => Array ( [lpad] => 36 [hpad] => 4 [wpad] => 162 [wanchor] => 232 [nanchor] => 4 [apw] => 1092.4 ) ) [40] => Array ( [noanchor] => Array ( [lpad] => 40 [hpad] => 4 [wpad] => 200 [wanchor] => 205 [nanchor] => 0 [apw] => 200 ) [ground_1] => Array ( [lpad] => 40 [hpad] => 4 [wpad] => 200 [wanchor] => 205 [nanchor] => 2 [apw] => 610 ) [ground_2] => Array ( [lpad] => 40 [hpad] => 4 [wpad] => 200 [wanchor] => 205 [nanchor] => 4 [apw] => 1020 ) [concrete] => Array ( [lpad] => 40 [hpad] => 4 [wpad] => 200 [wanchor] => 232 [nanchor] => 4 [apw] => 1130 ) ) )

也许这不是整体问题,但似乎我无法从 anchor() 得到另一个响应。我已经贪婪地搜索了像上面这样的数组的 php 函数,但我找不到任何东西。我知道,如果只设置 $array[36] = [所有信息] 的数组,我可以通过执行 print_r($array[36]) 来检索它,甚至指定嵌套数组的各个部分。但是这个插件在某些时候确实有效,所以我试图不必从第一个开始。我 100% 确信代码的步骤在将数据发送到计算函数之前可以工作,但我不知道在那之后问题出在哪里。如果需要,我可以提供更多代码或更多整体图片,但我的主要问题是如何获得所需的 $pad_data = anchor($d['site']) 输出以实际从数组中获取所需信息. $d 是传递的数据,'site' 是数据中的数组项之一。数据数组打印为:

Array(
[windSpeed] => 140
[manufacturer] => Rheem
[series] => RP20
[Nominal_Capacity] => 5.0
[modelNumber] => RP2060
[weight] => 355
[lenght] => 35.7500
[width] => 35.7500
[height] => 51.0000
[site] => concrete
)

是的,我知道 length 拼写错误,但最初写它的人每次都写错了,我只是还没有改变。

非常欢迎任何指导!

1 个答案:

答案 0 :(得分:0)

答案是,在代码中,他们只是将变量设置为一个数组,然后尝试访问该变量,就好像它包含一些内部逻辑一样。您可以将 $pad_data 用作数组变量,而无需将任何参数传递给锚点“函数”。总的来说,这是应用功能方面的一个小问题,但这是我问题的这一部分的答案。