函数$ _POST从数组参数返回值

时间:2017-02-19 19:56:48

标签: php arrays post

我从方法帖子

得到了这个回应
array(7) {
  ["enable"]=>
  array(2) {
    [0]=>
    string(2) "on"
    [1]=>
    string(2) "on"
  }
  ["value"]=>
  array(2) {
    [0]=>
    string(8) "R$ 10,00"
    [1]=>
    string(8) "R$ 10,00"
  }
  ["zip_code"]=>
  array(2) {
    [0]=>
    string(9) "57200-970"
    [1]=>
    string(9) "57200-990"
  }
  ["address"]=>
  array(2) {
    [0]=>
    string(28) "Avenida Floriano Peixoto"
    [1]=>
    string(33) "Povoado Tabuleiro dos Negros"
  }
  ["neighborhood"]=>
  array(2) {
    [0]=>
    string(6) "Centro"
    [1]=>
    string(4) "Bairro Vermelho"
  }
  ["city"]=>
  array(2) {
    [0]=>
    string(6) "Penedo"
    [1]=>
    string(6) "Penedo"
  }
  ["state"]=>
  array(2) {
    [0]=>
    string(2) "AL"
    [1]=>
    string(2) "AL"
  }
}

我首先需要使用foreach获取$ _POST [' active']并从另一个数组索引中获取值

  foreach (Request::post('enable') as $k => $v) {
    print Request::post(array("zip_code", $k)) . "\n"; 
   // I hope same result of $_POST['zip_code'][$k]
  }

真正的问题是我的功能

public static function post($key, $clean = false) {
    $result = is_array($key) ? array_search($key, $_POST) : $_POST[$key];
    if (!empty($result)) {
        return ($clean) ? trim(strip_tags($result)) : $result;
    }
    return NULL;
}

如果param键是来自此键数组的数组获取值

例如$ _POST [' a'] [' b'] [' c']

[编辑]

我改进了功能,谢谢@mickmackusa

public static function post($key, $clean = false) {
    $focus = $_POST;
    if (is_array($key)) {
        foreach ($key as $k) {
            if (!isset($focus[$k])) {
                return NULL;
            }
            $focus = $focus[$k];
            if (!is_array($focus)) {
                $result = $focus;
            }
        }
    } else {
        $result = empty($focus[$key]) ? NULL : $focus[$key];
    }
    return ($clean ? trim(strip_tags($result)) : $result);
}

1 个答案:

答案 0 :(得分:1)

我认为post()内的line1正在弄脏事情。根据{{​​1}}的类型,您将$key的值声明为键或值。但是,然后似乎将这两种可能性视为下一个条件中的一个值并将其返回。

$result

!empty条件检查$ result中的NOT falsey值。 查看所有虚假值@ empty() manual,包括0可以是完全合法的索引/键,等等。

相反,我认为你想使用:

public static function post($key, $clean=false) {
    $result = is_array($key) ? array_search($key, $_POST) : $_POST[$key];
    // if $key is an array, then $result is the key of the found value within $POST or FALSE if not found
    // if $key is not an array, then $result is the value of $_POST[$key]
    if (!empty($result)) {
        return ($clean) ? trim(strip_tags($result)) : $result;
    }
    return NULL;
}