ホームページ >バックエンド開発 >PHPチュートリアル >PHP の配列内のキー値が空の場合、そのキー値は配列に追加されません。

PHP の配列内のキー値が空の場合、そのキー値は配列に追加されません。

WBOY
WBOYオリジナル
2016-06-20 12:45:051559ブラウズ

	$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        ))


choice が空の [choice] => 値なしの場合データ配列に追加せずにこれを実現できますか?


ディスカッションへの返信 (解決策)

[1] => 配列
(
[フィールド ID] => 2
[選択] =>
[uid] => 1100 00110
[ゲーム ID] => ;

例のデータには [choice] => のケースはありません
ある場合は、選択項目のみを削除する必要がありますか、それともグループ全体を削除する必要がありますか?

$_POST['field_id'] ループよりも $_POST['choice'] ループの方が比較しやすいと思いませんか?


例のデータには [choice] => のケースはありません

ある場合は、選択項目のみを削除する必要がありますか、それともグループ全体を削除する必要がありますか?

$_POST['field_id'] ループよりも $_POST['choice'] ループの方が比較しやすいと思いませんか?


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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。