Функция $ _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

Решение

Я думаю line1 внутри post() загрязняет вещи. В зависимости от $keyТипа, вы заявляете $resultзначение как ключ или значение. Но затем, казалось бы, рассматривая обе возможности как значение в следующем условии и возвращая его.

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;
}

Условие! Empty проверяет НЕ ложные значения в $ result.
Посмотреть все значения Falsey @ empty () руководство, включая 0, который может быть полностью допустимым индексом / ключом, и многое другое.

Вместо этого я думаю, что вы хотите использовать:

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector