我从帖子中获取数组以插入数据库。我从表格的“天”选项卡获取名称。我正在插入一个循环,但无法获得总数。有些天是空的,有些是不同的总数。
试图为他们添加隐藏的输入,但无法成功。我想也许我可以计算总数并使其达到循环限制。
我正在使用此代码将数组插入sql,但它只能插入一个。我知道从mon计数是错误的,但是我不知道如何获得所有数组的总循环限制:
$i = 0;
foreach($_POST['mon'] as $item){
$mon= DB::control($_POST['mon'][$i],'text');
$tue= DB::control($_POST['tue'][$i],'text');
$wed= DB::control($_POST['wed'][$i],'text');
$thu= DB::control($_POST['thu'][$i],'text');
$fri= DB::control($_POST['fri'][$i],'text');
$sat= DB::control($_POST['sat'][$i],'text');
$sun= DB::control($_POST['sun'][$i],'text');
$query = DB::insert("INSERT INTO work(mon,tue,wed,thu,fri,sat,sun) VALUES($mon,$tue,$wed,$thu,$fri,$sat,$sun)");
$i++;
}
编辑:尝试对数组进行计数,我可以对完整数组进行计数,但也可以对空数组进行计数。
$d1 = count($_POST['mon']);
$d2 = count($_POST['tue']);
$d3 = count($_POST['wed']);
$d4 = count($_POST['thu']);
$d5 = count($_POST['fri']);
$d6 = count($_POST['sat']);
$d7 = count($_POST['sun']);
$total = $d1+$d2+$d3+$d4+$d5+$d6+$d7;
编辑Var_dump:
array(10) { ["city"]=> string(7) "Abcdef" ["que"]=> array(1) { [0]=> string(6) "que[]" } ["mon"]=> array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" } ["tue"]=> array(2) { [0]=> string(1) "1" [1]=> string(1) "2" } ["wed"]=> array(1) { [0]=> string(0) "" } ["thur"]=> array(1) { [0]=> string(0) "" } ["fri"]=> array(1) { [0]=> string(0) "" } ["sat"]=> array(1) { [0]=> string(0) "" } ["sun"]=> array(1) { [0]=> string(6) "trial" } ["psd"]=> string(19) "psdAddReport" }
编辑: 非常感谢。我可以用你的方式计算数组,但是我为我的解决方案想了错方法。我添加了循环插入代码。对于前。数4并插入4次。这是我的错。
HTML格式的TABS
Tab_City | Mon | Tue | Wed | Thur | Fri | Sat | Sun
-----------------------------------------------------
abc | a | a | a | aaa | aa | | aaa
| a | a | a | aaa | aa | | aaa
| a | a | | aaa | aa | | aaa
| a | a | | aaa | aa | | aaa
| a | a | | aaa | aa | | aaa
| a | | | aaa | aa | | aaa
| a | | | | aa | | aaa
| a | | | | aa | | aaa
| a | | | | aa | |
| a | | | | | |
有50个数组,但有10行。我数了50个数组,但现在我想获得最多的日子将对我有用。请说出我是错还是任何简单的方法。我想学习编码。 谢谢。
SQL
id |city | mon | tue | wed | thur | fri | sat | sun
-----|-----|-----|-----|------|-----|-----|------------
1 |abc | a | a | a | aaa | aa | | aaa
2 |abc | a | a | a | aaa | aa | | aaa
3 |abc | a | a | | aaa | aa | | aaa
4 |abc | a | a | | aaa | aa | | aaa
5 |abc | a | a | | aaa | aa | | aaa
6 |abc | a | | | aaa | aa | | aaa
7 |abc | a | | | | aa | | aaa
8 |abc | a | | | | aa | | aaa
9 |abc | a | | | | aa | |
10 |abc | a | | | | | |
答案 0 :(得分:2)
您可以使用array_sum(array_map('count', $arr))
进行操作。数组映射将在每个元素上执行count
函数,然后array_sum
将它们全部求和。使用array_filter
过滤出空数组和空数组。
考虑以下示例:
$arr["mon"] = ["a", "b", "c"];
$arr["tue"] = null;
$arr["wed"] = [];
$arr["thu"] = ["1", "2"];
$total = array_sum(array_map('count', array_filter($arr)));
echo $total; // print 5
参考:array_sum,array_map,array_filter
编辑:
$_POST["mon"] = ["a", "b", "c"];
$_POST["bbb"] = null;
$_POST["city"] = "aaaaaa";
$_POST["psd"] = "psdAddReport";
$_POST["wed"] = [""];
$_POST["eee"] = ["55", 232];
$_POST["tue"] = ["1", "2"];
$days = ["mon", "wed", "tue"]; // can add here all days
foreach($_POST as $k => $v)
if (in_array($k, $days))
$arr[] = $v;
// now $arr contains only days element
$total = array_sum(array_map('count', array_map('array_filter',array_filter($arr))));