如何使用数据库列中的逗号来压缩数组中的数据,其中foreach语句中的值为1?

时间:2017-10-06 01:02:32

标签: php mysql arrays

我想从数据库列创建只有value = 1且skip = 0的数组。我从星期一到星期日的列日是列。它们的值可能为1或0.

$dr = $this->mdokter->daftarDokter($bag);
foreach($dr as $d) {
          if($d['monday'] == 1) {
            $data[$no]['jadwal'] = "Monday";
          }
          if($d['tuesday'] == 1) {
            $data[$no]['jadwal'] .= "Tuesday";
          }
          if($d['wednesday'] == 1) {
            $data[$no]['jadwal'] .= "Wednesday";
          }
          if($d['thursday'] == 1) {
            $data[$no]['jadwal'] .= "Thursday";
          }
          if($d['friday'] == 1) {
            $data[$no]['jadwal'] .= "Friday";
          }
          if($d['saturday'] == 1) {
            $data[$no]['jadwal'] .= "Saturday";
          }
          if($d['sunday'] == 1) {
            $data[$no]['jadwal'] .= "Sunday";
          }
}

上面的代码只生成数据而不是逗号而不是数组。 如何从只有value = 1的数组创建数组。我想在$jadwal变量中收集数组。例如$ jadwal = array(" Monday"," Thursday"," Saturday");

1 个答案:

答案 0 :(得分:0)

您可以通过不同方式解决此问题:

首先:将其直接保存到数组中:要实现此目的,您必须将$data[$no]['jadwal'] = "Monday";更改为$data[$no]['jadwal'][] = "Monday";。现在$ data数组中的字段jadwal本身就是一个数组,而不是字符串。括号是array_push的简写。所以星期一将被推到jadwal数组。对其他行重复此更改,您将在结尾处获得一系列天数,其中数据库字段等于1

另一种方法:创建一周中所有名称的数组,并使用数据库中的结果过滤此数组:

$jadwal = ['monday', 'tuesday', 'wednesday', ...];
$jadwal = array_filter($jadwal, function($day) use($d) { return $d[$day]==1; });

这两行代替了上面的所有行。

如果您需要大写的第一个字母,请使用ucfirst