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

php中文网
发布: 2016-06-20 12:45:05
原创
1659人浏览过

	$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数组里面怎么实现呢?

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44
查看详情 怪兽AI数字人


回复讨论(解决方案)

 [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)){}这种情况怎么判断是否已经存在数据库了呢,各位前辈有什么好的办法吗?

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号