PHP: как получить конкретное значение массива

Я хотел бы получить идентификатор определенного значения в моей таблице phpmyadmin. Итак, у меня есть таблица с id_cal в качестве ИИ. id, 'mois' представляет месяц с числами (например, 1 для января) и 'annee' представляет год. (см. календарный стол)

Я пытаюсь установить переменную php для месяца и года, и если они соответствуют текущему месяцу и году, я хочу получить этот конкретный идентификатор.

Я прокомментировал php-код, в котором у меня возникли проблемы, вот он:

<?php

include_once('config.php');

$m = idate('n');
$y = idate('Y');

echo $m; echo "\t"; echo $y; echo "<br>"; echo "<br>";  // The result of this is 7 2019

$reponse = $bdd->query('SELECT * FROM calendrier');

while($donnees= $reponse->fetch()){ 
    $mois = $donnees['mois'];
    $year = $donnees['annee'];
    $id_cal = $donnees['id_cal'];
    echo $id_cal;
    echo "\t";
    echo $mois;
    echo "\t";
    echo $year;
    echo "<br>";
}

// What I am trying to do :

if (($m = $mois) && ($y = $year)){  // If the month and the year are the current month/year
    $i = $id_cal;                   // I want to put the id refering to the current month/year (in my phpmyadmin table) into a new variable
    echo "<br>";                    // and echo this variable (or use it in other ways)
    echo $i;                        // BUT what I am echoing is 24 representing the number of values in my array
}                                   // How can I only get 7 ? (in this exemple, since we are the 7/2019)

Вот что я получаю на своем локальном хосте: эхо

Я действительно не понимаю, почему у меня нет 7.

Кроме того, я попробовал это вместо своего времени:

$donnees= $reponse->fetch();    
$mois = $donnees['mois'];
$year = $donnees['annee'];
$id_cal = $donnees['id_cal'];

// But in this cas I am having $i = 1, so it's the same problem.

Большое спасибо заранее за ваш ответ, я очень борюсь с этим.

Возможно, вы хотели поместить if внутрь цикла? Последний раз в цикле $id_cal будет равен последнему, который на вашем изображении равен 24.

AbraCadaver 29.07.2019 17:45

Вы также, вероятно, хотите $m == $mois вместо $m = $mois.

Paul Spiegel 29.07.2019 18:07

== действительно было моей главной проблемой здесь, и мне также помогло размещение оператора if в цикле. Большое спасибо вам обоим!

7bmax 30.07.2019 12:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это потому, что id_cal перезаписывается новым значением id_cal при каждой итерации вашего оператора while.

Чтобы получить желаемый результат, вы можете поместить if внутри оператора while...

while($donnees= $reponse->fetch()){ 
    $mois = $donnees['mois'];
    $year = $donnees['annee'];
    $id_cal = $donnees['id_cal'];
    echo $id_cal;
    echo "\t";
    echo $mois;
    echo "\t";
    echo $year;
    echo "<br>";
    if (($m == $mois) && ($y == $year)){  
        $my_var_to_use_elsewhere = $id_cal;                 
    }   
}

echo "<br>";                   
echo $my_var_to_use_elsewhere;

Это (с добавлением решения Пола Шпигеля, то есть "= = ") сработало отлично, большое спасибо!

7bmax 30.07.2019 12:19

Ах да конечно! Вы также можете рассмотреть break; внутри оператора if, если вас не интересуют значения после выполнения вашего оператора if. php.net/manual/en/control-structures.break.php

Jonathan Clark 30.07.2019 12:52

Другие вопросы по теме