ホームページ >バックエンド開発 >PHPチュートリアル >質問: PHP で、送信された 2 次元配列内の特定の列のキー値が空ではないという結果を取得するにはどうすればよいですか?
提出された結果は次のとおりです:
Array( [name] => Array ( [0] => 地砖 [1] => [2] => 空心砖 [3] => 地砖 ) [cunit] => Array ( [0] => 块 [1] => [2] => 块 [3] => 块 ) [unitprice] => Array ( [0] => 35 [1] => [2] => 3.5 [3] => 35 ) [pronum] => Array ( [0] => 2 [1] => [2] => 2 [3] => ) [summoney] => Array ( [0] => [1] => [2] => [3] => ))
$data=$_POST['sale']; //print_r($data); foreach ($data as $k1 => $v1) { foreach ($v1 as $k2 => $v2) { $new_data[$k2][$k1] = $v2; $new_data[$k2]['username']='admin'; } }
$arr=array( 'name' => array ( 0 =>'地砖', 1 =>'', 2 => '空心砖', 3 => '地砖', ), 'cunit' => array ( 0 => '块', 1 => '', 2 => '块', 3 => '块' ), 'unitprice' => array ( 0 => 35, 1 => '', 2 => 3.5, 3 => 35 ), 'pronum' => array ( 0 => 2, 1 => '', 2 => 2, 3 =>'' ), 'summoney' => array ( 0 =>'', 1 =>'', 2 =>'', 3 =>'' ) );$new_data=array();foreach($arr as $k=>$v){ if($k=='name' || $k=='pronum'){ foreach($v as $newk=>$newv){ if($newv!=''){ $new_data[$k][]=$newv; } } }}print_r($new_data);[code=php]Array( [name] => Array ( [0] => 地砖 [1] => 空心砖 [2] => 地砖 ) [pronum] => Array ( [0] => 2 [1] => 2 ))
実は、その後の処理を容易にするためにこのように処理されています
Array( [0] => Array ( [name] => 地砖 [cunit] => 块 [unitprice] => 35 [pronum] => 2 [summoney] => ) [2] => Array ( [name] => 空心砖 [cunit] => 块 [unitprice] => 3.5 [pronum] => 2 [summoney] => ))
$k = array_keys($data);foreach(call_user_func_array('array_map', array_merge(array(null), $data)) as $i=>$r) { $r = array_combine($k, $r); if($r['name'] && $r['pronum']) $res[$i] = $r;}
xuzuning モデレータさん、ありがとうございます。これはより思慮深いアプローチです。luo19880415 に感謝します