多行資料群組合數組問題~~,真心不會組合了,求教導!

來源:互聯網
上載者:User
類似上面的表單,還沒加js,不一定多少行,我要做的是每行一條資料寫入資料庫。這個數組我就不會組合了
我表單裡是如下設定的:

 
品名: 型號: 規格: 數量: 單價: 總價:
品名: 型號: 規格: 數量: 單價: 總價:


擷取到的數組是這樣的
array  'pinming' =>     array      0 => string '123' (length=3)      1 => string '123' (length=3)  'xinghao' =>     array      0 => string '123' (length=3)      1 => string '123' (length=3)  'guige' =>     array      0 => string '123' (length=3)      1 => string '123' (length=3)  'shuliang' =>     array      0 => string '123' (length=3)      1 => string '123' (length=3)  'danjia' =>     array      0 => string '123' (length=3)      1 => string '123' (length=3)  'zongjia' =>     array      0 => string '12312' (length=5)      1 => string '123' (length=3)


我怎麼將上面的數組變成下面的樣子

array(    //第一條    array(        'pinming' => 'xxx'        'guige' => 'xxx'        //....其他欄位    )    //第二條    array(        'pingming' => 'xxx'        'guige' => 'xxx'        //其他欄位    )    //第N條    array())


回複討論(解決方案)

不就一個行列交換嗎?

class squareArray{public function swapRowCol($inArr){$mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);foreach($inArr as $key => $value) { $temArr = new ArrayIterator($value); $mit->attachIterator($temArr, $key); }$arr = array();foreach($mit as $item) array_push($arr,$item);if (isset($inArr[0])) $arr = array_combine(array_keys($inArr[0]),$arr);return $arr;}public function swapRowColWithKey($inArr){foreach($inArr as $k1=>$v1) foreach($v1 as $k2=>$v2) $arr[$k2][$k1] = $v2;return $arr;}...

本來你的輸入網頁就應該設計成一行(一個td)用一組變數名,那不就簡單了

foreach($_POST as $name=>$item) {  if(is_array($item)) {    foreach($item as $key=>$value) {      $res[$kek][$name] = $value;    }  }}
$res 就是你要的結果

$fields=array('pinming','guige','xinghao','shuliang','danjia','zongjia');$data=array();foreach($_POST['pinming'] as $key=>$vo){    foreach($fields as $item){        $data[$key][$item]=$_POST[$key][$item];    }}//$data is the result

foreach($_POST as $name=>$item) {  if(is_array($item)) {    foreach($item as $key=>$value) {      $res[$kek][$name] = $value;    }  }}
$res 就是你要的結果

版主你好,加了js以後可能會出現使用者點擊增加一行後什麼也不填寫就提交,這樣會寫一條空記錄,怎麼判斷拋棄空記錄的數組

先完成行列轉換,然後刪去全空的項目

foreach($res as $i=>$item) {  if(trim(join('', $item)) == '') unset($res[$i]);}

這種提交沒有必要搞這麼複雜

只要你確定1點就可以簡單化,就是哪一項是必填項,也就是說不可為空的

這裡我假設品名不可為空,那麼程式之需要這樣就可以

foreach($pinming as $key=>$val) {   $uparr=array();  if(trim($val)!='') {    $uparr['pinming']=$val;    $uparr['xinghao']=$pinming[$key];    $uparr['guige']=$guige[$key];    $uparr['shuliang']=$shuliang[$key];    $uparr['danjia']=$danjia[$key];    $uparr['zongjia']=$zongjia[$key];   //這裡加插入資料庫語句  }}


foreach($_POST as $name=>$item) {  if(is_array($item)) {    foreach($item as $key=>$value) {      $res[$kek][$name] = $value;    }  }}
$res 就是你要的結果

版主你好,加了js以後可能會出現使用者點擊增加一行後什麼也不填寫就提交,這樣會寫一條空記錄,怎麼判斷拋棄空記錄的數組
沒有必要要做組合的,你目的不外乎就是逐條插入資料庫,我在7#的代碼就可以滿足了



foreach($_POST as $name=>$item) {  if(is_array($item)) {    foreach($item as $key=>$value) {      $res[$kek][$name] = $value;    }  }}
$res 就是你要的結果

版主你好,加了js以後可能會出現使用者點擊增加一行後什麼也不填寫就提交,這樣會寫一條空記錄,怎麼判斷拋棄空記錄的數組
沒有必要要做組合的,你目的不外乎就是逐條插入資料庫,我在7#的代碼就可以滿足了

我用的是Thinkphp的關聯模型 HAS_MANY 一次性就能提交過去 所以我要傳一個這樣的數組進去!




foreach($_POST as $name=>$item) {  if(is_array($item)) {    foreach($item as $key=>$value) {      $res[$kek][$name] = $value;    }  }}
$res 就是你要的結果

版主你好,加了js以後可能會出現使用者點擊增加一行後什麼也不填寫就提交,這樣會寫一條空記錄,怎麼判斷拋棄空記錄的數組
沒有必要要做組合的,你目的不外乎就是逐條插入資料庫,我在7#的代碼就可以滿足了

我用的是Thinkphp的關聯模型 HAS_MANY 一次性就能提交過去 所以我要傳一個這樣的數組進去!

那我用我的方法一樣可以組合,插入資料庫的地方變成組合新數組形式就可以

也就是

$newarr=array();foreach($pinming as $key=>$val) {   $uparr=array();  if(trim($val)!='') {    $uparr['pinming']=$val;    $uparr['xinghao']=$pinming[$key];    $uparr['guige']=$guige[$key];    $uparr['shuliang']=$shuliang[$key];    $uparr['danjia']=$danjia[$key];    $uparr['zongjia']=$zongjia[$key];    $newarr[]=$uparr;   }}


哎,要懂得變通,而不是死思維
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.