欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php中数组中某个键值为空的时候,不加入到数组。

程序员文章站 2022-06-15 22:05:01
...
	$data = array();			if (!empty($_POST['field_id'])) {				foreach ($_POST['field_id'] as $k => $v) {					$data[] = array(						'field_id' => $v, 						'choice' => isset($_POST['choice'][$k]) ? $_POST['choice'][$k] : '', 						'uid' => $_POST['uid'],						'game_id' => $_POST['game_id'],						'server_id' => $_POST['server_id']					);  				}   			}  

这是我循环格式化的地方,下面是输出的数组数据
Array(    [0] => Array        (            [field_id] => 1            [choice] => 0            [uid] => 110000110            [game_id] => 2            [server_id] => 2        )    [1] => Array        (            [field_id] => 2            [choice] => 0            [uid] => 110000110            [game_id] => 2            [server_id] => 2        )    [2] => Array        (            [field_id] => 3            [choice] => 1            [uid] => 110000110            [game_id] => 2            [server_id] => 2        ))


当choiece等于空的时候 [choice] =>没有值的时候不加入到data数组里面怎么实现呢?


回复讨论(解决方案)

[1] => Array
(
[field_id] => 2
[choice] =>
[uid] => 110000110
[game_id] => 2
[server_id] => 2
)
像这样的情况,0和1是有值的。

你示例的数据中并没有 [choice] => 的情况
如果有的话,是仅不要 choice 项,还是整组都不要?

你对 $_POST['choice'] 循环,不是比对 $_POST['field_id'] 循环等容易点吗?

你示例的数据中并没有 [choice] => 的情况
如果有的话,是仅不要 choice 项,还是整组都不要?

你对 $_POST['choice'] 循环,不是比对 $_POST['field_id'] 循环等容易点吗?



Array
(
[0] => Array
(
[field_id] => 1
[choice] => 0
[uid] => 110000110
[game_id] => 2
[server_id] => 2
)

[1] => Array
(
[field_id] => 2
[choice] =>
[uid] => 110000110
[game_id] => 2
[server_id] => 2
)

[2] => Array
(
[field_id] => 3
[choice] =>
[uid] => 110000110
[game_id] => 2
[server_id] => 2
)

)

大概就是这样一个效果,没有值的就不要了,显示成这样
Array
(
[0] => Array
(
[field_id] => 1
[choice] => 0
[uid] => 110000110
[game_id] => 2
[server_id] => 2
)
)
只有choice没有值的就整个数组都不要了。

$data = array();if (!empty($_POST['field_id'])) {   foreach ($_POST['choice'] as $k => $v) {      if($v == '') continue;      $data[] = array(          'field_id' => $_POST['field_id'][$k],           'choice' => $_POST['choice'][$k],           'uid' => $_POST['uid'],          'game_id' => $_POST['game_id'],          'server_id' => $_POST['server_id']      );    }   }

$data = array();if (!empty($_POST['field_id'])) {   foreach ($_POST['choice'] as $k => $v) {      if($v == '') continue;      $data[] = array(          'field_id' => $_POST['field_id'][$k],           'choice' => $_POST['choice'][$k],           'uid' => $_POST['uid'],          'game_id' => $_POST['game_id'],          'server_id' => $_POST['server_id']      );    }   }

谢谢版主,不过我下面用的批量添加的时候,如果已经选择过了的会提示失败,tp里面addall怎么判断是否已经添加过了呢
$Choice=D('Myselect');			//$choices=$Choice->addAll($data);			if($Choice->addAll($data)){				$back['status']='success';				$back['msg']='您的投注已经成功!';				$back['url']='game';				$this->back($back);			 	}else{				$back['status']='error';				$back['msg']='投注失败!别重复下注哦!';				$back['url']='game';				$this->back($back);				exit;				}			}

if($Choice->addAll($data,array(),true)){}看了下mod默认是false,改成true会一直改变数据库的值,那就没有意义了
if($Choice->addAll($data,array(),false)){}这种情况怎么判断是否已经存在数据库了呢,各位前辈有什么好的办法吗?