Проблема с массивом PHP, на который ссылается строковый индекс в приложении Laravel - PullRequest
0 голосов
/ 03 сентября 2018

У меня проблема с массивом в PHP. Дело в том, что хотят отображать информацию о некоторых пользователях в таблице на моей странице, у этих пользователей есть несколько свойств. Я просто хочу отобразить имя пользователя, за которым следуют 4 свойства, эти свойства в моей базе данных имеют логический тип (true / false). Чтобы представить эти значения в списке, я использую флажки, поэтому каждый флажок отображает отмеченный или не отмеченный в соответствии со значением в базе данных. Я уже получил эти значения через запрос. У меня просто проблемы с отображением в моем представлении (страница).

Чтобы проверить, является ли свойство истинным или ложным, я использую два цикла foreach. Я использую первый для каждого пользователя, а второй для оценки 4 свойств каждого пользователя. Я также предварительно установил массив, который отвечает за сохранение, если это свойство имеет значение true или false. Поэтому, если свойство имеет значение true, индекс «выбранный» в моем массиве будет иметь значение true.

Структура массива:

$choiceProperty['text'] // This already contains the four possible     properties.
$choiceProperty['selected'] // This is going to store true if the property is true.
$choiceProperty['user_id'] // This is going to store the id of the user.

Это мой код:

foreach ($user as $key => $userIndiv) {

        foreach ($properties as &$choiceProperty) {

            unset($choiceProperty['selected']);

            if ($choiceProperty['text'] == 'A' && $userIndiv->CategoryA) {
                $choiceProperty['selected'] = true;
            }
            if ($choiceProperty['text'] == 'B' && $userIndiv->CategoryB) {
                $choiceProperty['selected'] = true;
            }
            if ($choiceProperty['text'] == 'C' && $userIndiv->CategoryC) {
                $choiceProperty['selected'] = true;
            }
            if ($choiceProperty['text'] == 'D' && $userIndiv->CategoryD) {
                $choiceProperty['selected'] = true;
            }
            $choiceProperty['user_id'] = $userIndiv->id;
        }

        array_push($finalChoices, $properties); 

    }

Как вы можете видеть, каждый $ userIndiv-> CategoryA, CategoryB, CategoryC ... уже содержит значение, полученное из базы данных.

В конце каждого пользователя я добавляю текущий массив $ properties в другой массив $ finalChoices, чтобы снова проверить следующего пользователя и т. Д.

Проблемы возникают, когда я печатаю массив $ finalChoices, чтобы увидеть его содержимое, и я вижу, что он содержит массив для каждого пользователя со своими свойствами, но последний индекс каждого массива каждого пользователя содержит одинаковое значение для всех массивов. , Посмотрите, что я имею в виду:

Первая позиция массива:

First position of array

Вторая позиция массива:

Second position of array

Третья и последняя позиция массива:

Their and last position of array

Как видите, все элементы массивов в их последней позиции имеют одинаковые значения массива последней позиции. Таким образом, они не показывают свою реальную ценность. Например, исходя из моей базы данных, первый и второй массивы должны были «выделяться» в своей последней позиции, поскольку они имеют значение «true» в категории D.

Я новичок в PHP и не уверен, что делаю неправильно. Конечно, в моей логике чего-то не хватает, что может вызвать у меня эту ошибку. Если бы вы могли помочь мне, я был бы благодарен!

Я также хочу извиниться за мой английский, я не являюсь носителем языка, и он все еще улучшается. Спасибо.

Чтобы закончить, я хотел бы добавить изображение того, как это выглядит на мой взгляд: View

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...