【问题标题】:Verify value in a PHP array and reasign result to the variable验证 PHP 数组中的值并将结果分配给变量
【发布时间】:2019-02-07 06:21:38
【问题描述】:

如果您能帮助解决这个 PHP 问题,我将不胜感激。

  1. 我需要验证$fl_blackriver$fl_flacq等的值...
  2. 如果value=="",将0分配给这个值
  3. 用更新后的值更新对应的变量

 

$fl_blackriver = $_REQUEST['fl_blackriver'];
$fl_flacq = $_REQUEST['fl_flacq'];
$fl_grandport = $_REQUEST['fl_grandport'];
$fl_moka = $_REQUEST['fl_moka'];
$fl_pamplemousses = $_REQUEST['fl_pamplemousses'];
$fl_plaineswilhems = $_REQUEST['fl_plaineswilhems'];
$fl_portlouis = $_REQUEST['fl_portlouis'];
$fl_rivieredurempart = $_REQUEST['fl_rivieredurempart'];
$fl_savanne = $_REQUEST['fl_savanne'];
$fl_finalize = $_REQUEST['fl_finalize'];

$district = array($fl_blackriver,$fl_flacq,$fl_grandport,$fl_moka,$fl_pamplemousses,$fl_plaineswilhems,$fl_portlouis,$fl_rivieredurempart,$fl_savanne,$fl_finalize);

$arrlength = count($district);


for($x = 0; $x < $arrlength; $x++)
{
  if ($district[$x]=="")
    $district[$x] = "0";
}

【问题讨论】:

  • 当前代码有什么问题
  • 将更新后的值分配给同一个变量不起作用。

标签: php arrays variables


【解决方案1】:

这看起来不太好,但应该可以解决问题:

$fl_blackriver = $_REQUEST['fl_blackriver'];
$fl_flacq = $_REQUEST['fl_flacq'];
$fl_grandport = $_REQUEST['fl_grandport'];
$fl_moka = $_REQUEST['fl_moka'];
$fl_pamplemousses = $_REQUEST['fl_pamplemousses'];
$fl_plaineswilhems = $_REQUEST['fl_plaineswilhems'];
$fl_portlouis = $_REQUEST['fl_portlouis'];
$fl_rivieredurempart = $_REQUEST['fl_rivieredurempart'];
$fl_savanne = $_REQUEST['fl_savanne'];
$fl_finalize = $_REQUEST['fl_finalize'];

$district = array(
    'fl_blackriver' => $fl_blackriver,
    'fl_flacq' => $fl_flacq,
    'fl_grandport' => $fl_grandport,
    'fl_moka' => $fl_moka,
    'fl_pamplemousses' => $fl_pamplemousses,
    'fl_plaineswilhems' => $fl_plaineswilhems,
    'fl_portlouis' => $fl_portlouis,
    'fl_rivieredurempart' => $fl_rivieredurempart,
    'fl_savanne' => $fl_savanne,
    'fl_finalize' => $fl_finalize
);

foreach ($district as $key => $value) {
    if ($value === "") {
        $$key = "0";
    }
}

【讨论】:

  • 非常感谢卢卡。这就是我要找的。我带来的只是一个小改动: if ($value == "") 而不是 if ($value ==="") 工作得更好,因为它也考虑了复选框的值。
【解决方案2】:

你可以像这样使用三元运算符来做到这一点,

$fl_blackriver = !empty($_REQUEST['fl_blackriver']) ? $_REQUEST['fl_blackriver'] : 0 ;    
        $fl_flacq = !empty($_REQUEST['fl_flacq']) ? $_REQUEST['fl_flacq'] : 0 ;  
        $fl_grandport = !empty($_REQUEST['fl_grandport']) ? $_REQUEST['fl_grandport'] : 0 ;    
        $fl_moka = !empty($_REQUEST['fl_moka']) ? $_REQUEST['fl_moka'] : 0 ; 
        $fl_pamplemousses = !empty($_REQUEST['fl_pamplemousses']) ? $_REQUEST['fl_pamplemousses'] : 0 ; 
        $fl_plaineswilhems = !empty($_REQUEST['fl_plaineswilhems']) ? $_REQUEST['fl_plaineswilhems'] : 0 ; 
        $fl_portlouis = !empty($_REQUEST['fl_portlouis']) ? $_REQUEST['fl_portlouis'] : 0 ; 
        $fl_rivieredurempart = !empty($_REQUEST['fl_rivieredurempart']) ? $_REQUEST['fl_rivieredurempart'] : 0 ; 
        $fl_savanne =  !empty($_REQUEST['fl_savanne']) ? $_REQUEST['fl_savanne'] : 0 ; 
        $fl_finalize =  !empty($_REQUEST['fl_finalize']) ? $_REQUEST['fl_finalize'] : 0 ;

【讨论】:

  • 使用empty() 时要小心,因为它会在更多情况下返回false,而不仅仅是一个空字符串。
  • 嗨,我想用数组来做同样的事情。用更少的代码让它更容易
  • 如果您在 $_REQUEST 中有固定数量的元素,他们为什么要进行循环。使用循环和 if 包含更多代码,看起来并不容易。
【解决方案3】:

您可以尝试以下过程。它将检查该值是否为空。如果该值为空,则将值设置为 0。否则,它将采用请求的值。

$fl_blackriver = (isset($_REQUEST['fl_blackriver'])) ? $_REQUEST['fl_blackriver'] : 0;
$fl_flacq = (isset($_REQUEST['fl_flacq'])) ? $_REQUEST['fl_flacq'] : 0;
$fl_grandport = (isset($_REQUEST['fl_grandport'])) ? $_REQUEST['fl_grandport'] : 0;
$fl_moka = (isset($_REQUEST['fl_moka'])) ? $_REQUEST['fl_moka'] : 0;
$fl_pamplemousses = (isset($_REQUEST['fl_pamplemousses'])) ? $_REQUEST['fl_pamplemousses'] : 0;
$fl_plaineswilhems = (isset($_REQUEST['fl_plaineswilhems'])) ? $_REQUEST['fl_plaineswilhems'] : 0;
$fl_portlouis = (isset($_REQUEST['fl_portlouis'])) ? $_REQUEST['fl_portlouis'] : 0;
$fl_rivieredurempart = (isset($_REQUEST['fl_rivieredurempart'])) ? $_REQUEST['fl_rivieredurempart'] : 0;
$fl_savanne = (isset($_REQUEST['fl_savanne'])) ? $_REQUEST['fl_savanne'] : 0;
$fl_finalize = (isset($_REQUEST['fl_finalize'])) ? $_REQUEST['fl_finalize'] : 0;

$district = array($fl_blackriver,$fl_flacq,$fl_grandport,$fl_moka,$fl_pamplemousses,$fl_plaineswilhems,$fl_portlouis,$fl_rivieredurempart,$fl_savanne,$fl_finalize);

【讨论】:

    【解决方案4】:
    foreach($_REQUEST as $key => $value) {
    if (! is_numeric($value)) {
        $_REQUEST[$key] = 0;
    }}
    extract($_REQUEST);
    

    【讨论】:

      【解决方案5】:

      我会在一个可变参数函数中这样做,当给出多个参数时返回一个数组,或者当只有一个参数存在时返回任何类型的源。

      function request(string ...$names)
      {
        foreach ($names as &$v)
          $v = '' === ($v = $_REQUEST[$v] ?? 0) ? 0 : $v;
        return 1 === count($names) ? $names[0] : $names;
      }
      
      
      [$fl_blackriver, $fl_flacq] = request('fl_blackriver', 'fl_flacq');
      $fl_grandport               = request('fl_grandport');
      
      $district                   = request('fl_blackriver','fl_flacq','fl_grandport','fl_moka','fl_pamplemousses','fl_plaineswilhems','fl_portlouis','fl_rivieredurempart','fl_savanne','fl_finalize');
      
      var_dump($fl_blackriver, $fl_flacq, $fl_grandport);
      var_dump($district);
      

      在关联数组中获取键/值对:

      function request_assoc(string ...$names) : array
      {
        $names = array_flip($names);
        foreach ($names as $k => &$v)
          $v = '' === ($v = $_REQUEST[$k] ?? 0) ? 0 : $v;
      
        return $names;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-22
        • 2016-02-20
        • 2022-01-06
        相关资源
        最近更新 更多