PHP массив при использовании в то время как foreach показывает неправильный результат - PullRequest
0 голосов
/ 25 мая 2018

Я запускаю следующий код:

$getytclicks = mysqli_query($mysqli, "SELECT * FROM links WHERE type='youtube'");
$clicks=array();
    while($r = mysqli_fetch_array($getytclicks))
    {
        if($r['month'] == $month && $r['year'] == date("Y"))
        {
            foreach($days as $day)
            {
                if($r['day'] . " " . $month == $day && $r['year'] == date("Y"))
                {
                    $clicks[$day] .= mysqli_num_rows(mysqli_query($mysqli, "SELECT * FROM links WHERE day='".$r['day']."' AND month='".$r['month']."' AND year='".$r['year']."'"));
                } else {
                    $clicks[$day] .= 0;
                }
            }
        }
    }
var_dump($clicks);

И вот что var_dump показывает:

array (size=31)
  '01 Май' => string '0000000000' (length=10)
  '02 Май' => string '0000000000' (length=10)
  '03 Май' => string '0000000000' (length=10)
  '04 Май' => string '0000000000' (length=10)
  '05 Май' => string '0000000000' (length=10)
  '06 Май' => string '0000000000' (length=10)
  '07 Май' => string '0000000000' (length=10)
  '08 Май' => string '0000000000' (length=10)
  '09 Май' => string '0000000000' (length=10)
  '10 Май' => string '0000000000' (length=10)
  '11 Май' => string '0000000000' (length=10)
  '12 Май' => string '0000000000' (length=10)
  '13 Май' => string '0000000000' (length=10)
  '14 Май' => string '0000000000' (length=10)
  '15 Май' => string '0000000000' (length=10)
  '16 Май' => string '0000000000' (length=10)
  '17 Май' => string '0000000000' (length=10)
  '18 Май' => string '0000000000' (length=10)
  '19 Май' => string '0000000000' (length=10)
  '20 Май' => string '1000000000' (length=10)
  '21 Май' => string '0000000000' (length=10)
  '22 Май' => string '0333000000' (length=10)
  '23 Май' => string '0000100000' (length=10)
  '24 Май' => string '0000044440' (length=10)
  '25 Май' => string '0000000001' (length=10)
  '26 Май' => string '0000000000' (length=10)
  '27 Май' => string '0000000000' (length=10)
  '28 Май' => string '0000000000' (length=10)
  '29 Май' => string '0000000000' (length=10)
  '30 Май' => string '0000000000' (length=10)
  '31 Май' => string '0000000000' (length=10)

Почему он показывает слишком много нулей?

Это должен быть только один ноль.Кроме того, если значения 1, 3, 4 и 1, мне нужно только показать их, а не нули.

Я пытался перейти с $clicks['day'] .= на $clicks['day'] =, но затем он показывает только последний результат, который составляет 1 для 25th May.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вы объединяете данные, вызывая эти избыточные значения.

Измените это:

if($r['day'] . " " . $month == $day && $r['year'] == date("Y"))
{
     $clicks[$day] .= mysqli_num_rows(mysqli_query($mysqli, "SELECT * FROM links WHERE day='".$r['day']."' AND month='".$r['month']."' AND year='".$r['year']."'"));
} else {
    $clicks[$day] .= 0;
}

На это:

if($r['day'] . " " . $month == $day && $r['year'] == date("Y"))
{
   $clicks[$day] = mysqli_num_rows(mysqli_query($mysqli, "SELECT * FROM links WHERE day='".$r['day']."' AND month='".$r['month']."' AND year='".$r['year']."'"));
} else {
   $clicks[$day] = 0;
}
0 голосов
/ 25 мая 2018

Вы добавляете 0 как $clicks[$day] .= 0;.Я думаю, что вы пытаетесь сделать это как $ clicks [$ day] = 0;Не добавляйте каждый раз, просто назначьте его.

$getytclicks = mysqli_query($mysqli, "SELECT * FROM links WHERE type='youtube'");
$clicks=array();
    while($r = mysqli_fetch_array($getytclicks))
    {
        if($r['month'] == $month && $r['year'] == date("Y"))
        {
            foreach($days as $day)
            {
                if($r['day'] . " " . $month == $day && $r['year'] == date("Y"))
                {
                    $clicks[$day] = mysqli_num_rows(mysqli_query($mysqli, "SELECT * FROM links WHERE day='".$r['day']."' AND month='".$r['month']."' AND year='".$r['year']."'"));
                } else {
                    $clicks[$day] = 0;
                }
            }
        }
    }
var_dump($clicks);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...